手机便宜的网站建设,做网站ddos攻击,安顺建设工程造价管理网站,维护一个网站的费用文章目录 1、前言1.1、部署 MySQL 容器的 3 种类型1.2、M2芯片类型问题 2、具体实现2.1、单独部署 mysql 供宿主机访问2.1.1、文件夹结构2.1.2、docker-compose.yml 内容2.1.3、运行 2.2、单独部署 mysql 容器供其它容器访问#xff08;以 apollo 为例#xff09;2.2.1、文件… 文章目录 1、前言1.1、部署 MySQL 容器的 3 种类型1.2、M2芯片类型问题 2、具体实现2.1、单独部署 mysql 供宿主机访问2.1.1、文件夹结构2.1.2、docker-compose.yml 内容2.1.3、运行 2.2、单独部署 mysql 容器供其它容器访问以 apollo 为例2.2.1、文件夹结构2.2.2、docker-compose.yml 内容2.2.3、运行2.2.4、 客户端配置 2.3、使用一个 compose 文件同时部署 mysql 和其它容器以 apollo 为例2.3.1、文件夹结构2.3.2、compose 文件内容2.3.3、运行2.3.4、 客户端配置  3、附录3.1、调试可能用到的命令3.2、apollo 配置参考  1、前言 
1.1、部署 MySQL 容器的 3 种类型 
在容器中部署 Mysql 会有三种网络分布类型 单独部署 mysql 容器宿主机通过端口映射访问 容器 mysql  使用两个 compose 文件分别部署 mysql 容器和其它容器比如 apollo 的 config-service、admin-service、portal  使用一个 compose 文件同时部署 mysql 和其它容器比如 apollo 的 config-service、admin-service、portal其它容器通过mysql容器名:容器端口访问 mysql,此时相当于一次部署了 4 个容器  
1.2、M2芯片类型问题 
容器来自镜像而镜像和芯片架构有关。 部署完容器之后又会涉及一些工具软件(比如 workbench)的适配问题。 
一般而言使用 compose 直接使用 镜像名:latest 即可但是使用 Mysql,为了寻求 M2芯片mysql镜像workbench 适配我们需要增加一些特殊配置。 指定架构类型 platform: linux/amd64 #x86_64 系统大多数桌面和服务器 platform: linux/arm64 #ARM64 系统例如 Apple M1/M2 platform: linux/arm/v7 #32 位 ARM 系统例如旧版 Raspberry Pi  指定 镜像版本  
image: mysql:8.0.302、具体实现 
2.1、单独部署 mysql 供宿主机访问 
2.1.1、文件夹结构 
sql 可以放置 xxx.sql 脚本不过建议容器启动后再手动执行。 data 为宿主机挂载容器的数据目录。  
2.1.2、docker-compose.yml 内容 
# 如果需要自定义共享网络 
# docker network create bestcxx-network
# 自定义工程名称默认文件夹名影响注册网络名AAA_网络名或者 docker-compose -p diy_project_name up 启动时定义
# 外部连接时需要 allowPublicKeyRetrievaltrue 以支持明文连接数据库
version: 3.8services:mysql-db-withdata:#platform:  linux/arm64 #非 arm 架构芯片可以注释本行image: mysql:8.0.30 #M2 版本 8.0.30,目前最新 workbench 最高到 8  #非 arm 架构芯片可以写 image: mysql:latestcontainer_name: mysql-db-withdatarestart: alwaysports:- 13306:3306environment:MYSQL_ROOT_PASSWORD: rootadminMYSQL_DATABASE: apollodbMYSQL_USER: userapolloMYSQL_PASSWORD: userapollovolumes:#- ./sql:/docker-entrypoint-initdb.d # 自动加载运行 /sql 目录下的脚本 xxx.sql- ./data:/var/lib/mysql # 在宿主机持久化数据networks:bestcxx-network:
networks:bestcxx-network:2.1.3、运行 
在 Mysql 文件夹目录下执行 
# docker-compose stop
docker-compose up -d2.2、单独部署 mysql 容器供其它容器访问以 apollo 为例 最终容器运行形态展示  这里需要为两个容器创建一个共同的容器网络。 默认情况下每启动一个容器会自动创建一个 文件夹_网络名 的容器网络当多个 compose 文件启动容器时可以在命令行加入配置使得不同的 compose 启动的多个容器使用共同的容器名、内部定义相同的网络名——最终共享同一个容器网络。 
创建一个容器网络网络名为 bestcxx-network  
docker network create bestcxx-networkcompose 使用指定工程名实际出册网络为 工程名_compose设置的网络名 
# 默认会以文件夹作为工程名 docker-compose up -d
docker-compose -p diy_project_name up # 以 diy_project_name 作为工程名compose 设定使用外部已有网络 如下使用名为 bestcxx-network 的外部网络 networks:bestcxx-network:external: true查看容器网络列表 
docker network ls删除容器网络 
docker network rm  mysql_bestcxx-network2.2.1、文件夹结构 
mysql sql 可以放置 xxx.sql 脚本不过建议容器启动后再手动执行。 data 为宿主机挂载容器的数据目录。 apollo  
2.2.2、docker-compose.yml 内容 
mysql 
# 如果需要自定义共享网络 
# docker network create bestcxx-network
# 自定义工程名称默认文件夹名影响注册网络名AAA_网络名或者 docker-compose -p diy_project_name up 启动时定义
# 外部连接时需要 allowPublicKeyRetrievaltrue 以支持明文连接数据库
version: 3.8services:mysql-db-withdata:#platform:  linux/arm64 #非 arm 架构芯片可以注释本行image: mysql:8.0.30 #M2 版本 8.0.30,目前最新 workbench 最高到 8  #非 arm 架构芯片可以写 image: mysql:latestcontainer_name: mysql-db-withdatarestart: alwaysports:- 13306:3306environment:MYSQL_ROOT_PASSWORD: rootadminMYSQL_DATABASE: apollodbMYSQL_USER: userapolloMYSQL_PASSWORD: userapollovolumes:#- ./sql:/docker-entrypoint-initdb.d # 自动加载运行 /sql 目录下的脚本 xxx.sql- ./data:/var/lib/mysql # 在宿主机持久化数据networks:bestcxx-network:
networks:bestcxx-network:external: trueapollo version: 3.6
services:config-service:image: apolloconfig/apollo-configservicecontainer_name: apollo-config-servicehostname: config-serviceenvironment:#- SPRING_DATASOURCE_URLjdbc:mysql://host.docker.internal:3306/ApolloConfigDB?useSSLfalsecharacterEncodingutf8- SPRING_DATASOURCE_URLjdbc:mysql://mysql-db-withdata:3306/ApolloConfigDB?useSSLfalsecharacterEncodingutf8allowPublicKeyRetrievaltrue- SPRING_DATASOURCE_USERNAMEuserapollo- SPRING_DATASOURCE_PASSWORDuserapollo- JAVA_OPTS-Deureka.instance.homePageUrlhttp://127.0.0.1:8080ports:- 8080:8080 # 宿主机端口 : 容器端口networks:bestcxx-network:admin-service:image: apolloconfig/apollo-adminservicecontainer_name: apollo-admin-servicehostname: admin-serviceenvironment:#- SPRING_DATASOURCE_URLjdbc:mysql://host.docker.internal:3306/ApolloConfigDB?useSSLfalsecharacterEncodingutf8- SPRING_DATASOURCE_URLjdbc:mysql://mysql-db-withdata:3306/ApolloConfigDB?useSSLfalsecharacterEncodingutf8allowPublicKeyRetrievaltrue- SPRING_DATASOURCE_USERNAMEuserapollo- SPRING_DATASOURCE_PASSWORDuserapollo- CONFIGSERVICE_URLhttp://config-service:8080- JAVA_OPTS-Deureka.instance.homePageUrlhttp://admin-service:8090ports:- 8090:8090depends_on:- config-servicenetworks:bestcxx-network:portal:image: apolloconfig/apollo-portalcontainer_name: apollo-portalhostname: portalenvironment:#- SPRING_DATASOURCE_URLjdbc:mysql://host.docker.internal:3306/ApolloPortalDB?useSSLfalsecharacterEncodingutf8- SPRING_DATASOURCE_URLjdbc:mysql://mysql-db-withdata:3306/ApolloPortalDB?useSSLfalsecharacterEncodingutf8allowPublicKeyRetrievaltrue- SPRING_DATASOURCE_USERNAMEuserapollo- SPRING_DATASOURCE_PASSWORDuserapollo- APOLLO_PORTAL_ENVSdev- DEV_METAhttp://config-service:8080- JAVA_OPTS-Deureka.instance.homePageUrlhttp://portal:8070ports:- 8070:8070depends_on:- config-service- admin-servicenetworks:bestcxx-network:networks:bestcxx-network:external: true 
2.2.3、运行 
创建网络 
docker network create bestcxx-network以指定工程名方式启动 mysql 在 Mysql 文件夹下执行 
docker-compose -p diy_project_name up然后进行操作建议使用 workbench 
#给用户 userapollo 授权-可以全部授权CREATEUSERuserapollo% IDENTIFIED BYuserapollo;GRANTALL PRIVILEGES ON ApolloConfigDB.*TOuserapollo%;GRANTALL PRIVILEGES ON ApolloPortalDB.*TOuserapollo%;FLUSH PRIVILEGES;#创建数据库:
CREATE DATABASE ApolloConfigDB;
CREATE DATABASE ApolloPortalDB;#执行 apollo 官方建表初始化 sql
https://github.com/apolloconfig/apollo/tree/master/scripts/sql# 执行开发环境适配 sql
UPDATE ApolloConfigDB.ServerConfig SET Value  http://config-service:8080/eureka/ WHERE (Id  1);
UPDATE ApolloPortalDB.ServerConfig SET Value  {\dev\:\http://config-service:8080\} WHERE (Id  8); 
以指定工程名方式启动 apollo 在 Apollo 文件夹下执行 
docker-compose -p diy_project_name up2.2.4、 客户端配置 
{apollo: {AppId: helloabp,Env: dev,Cluster: default,MetaServer: http://localhost:8080,Namespaces: [hello.web.json]},ClientId: bestcxxLocal
}2.3、使用一个 compose 文件同时部署 mysql 和其它容器以 apollo 为例 
最终形态 容器网络  
2.3.1、文件夹结构 
sql 可以放置 xxx.sql 脚本不过建议容器启动后再手动执行。 data 为宿主机挂载容器的数据目录。  
2.3.2、compose 文件内容 
ApolloMysql 
version: 3.6services:mysql-db-withdata:#platform:  linux/arm64 #非 arm 架构芯片可以注释本行image: mysql:8.0.30 #M2 版本 8.0.30,目前最新 workbench 最高到 8  #非 arm 架构芯片可以写 image: mysql:latestcontainer_name: mysql-db-withdatarestart: alwaysports:- 13306:3306environment:MYSQL_ROOT_PASSWORD: rootadminMYSQL_DATABASE: apollodbMYSQL_USER: userapolloMYSQL_PASSWORD: userapollovolumes:- ./sql:/docker-entrypoint-initdb.d # 自动加载运行 /sql 目录下的脚本 xxx.sql- ./data:/var/lib/mysql # 在宿主机持久化数据networks:apollo-network:config-service:image: apolloconfig/apollo-configservicecontainer_name: apollo-config-servicehostname: config-serviceenvironment:- SPRING_DATASOURCE_URLjdbc:mysql://mysql-db-withdata:3306/ApolloConfigDB?useSSLfalsecharacterEncodingutf8allowPublicKeyRetrievaltrue- SPRING_DATASOURCE_USERNAMEuserapollo- SPRING_DATASOURCE_PASSWORDuserapollo- JAVA_OPTS-Deureka.instance.homePageUrlhttp://127.0.0.1:8080 #配置为 http://config-service:8080 可避免 http://127.0.0.1:8070/system_info.html check 报错但是需要额外 /etc/hosts 配置ports:- 8080:8080 # 宿主机端口 : 容器端口networks:apollo-network:admin-service:image: apolloconfig/apollo-adminservicecontainer_name: apollo-admin-servicehostname: admin-serviceenvironment:- SPRING_DATASOURCE_URLjdbc:mysql://mysql-db-withdata:3306/ApolloConfigDB?useSSLfalsecharacterEncodingutf8allowPublicKeyRetrievaltrue- SPRING_DATASOURCE_USERNAMEuserapollo- SPRING_DATASOURCE_PASSWORDuserapollo- CONFIGSERVICE_URLhttp://config-service:8080- JAVA_OPTS-Deureka.instance.homePageUrlhttp://admin-service:8090ports:- 8090:8090depends_on:- config-servicenetworks:apollo-network:portal:image: apolloconfig/apollo-portalcontainer_name: apollo-portalhostname: portalenvironment:- SPRING_DATASOURCE_URLjdbc:mysql://mysql-db-withdata:3306/ApolloPortalDB?useSSLfalsecharacterEncodingutf8allowPublicKeyRetrievaltrue- SPRING_DATASOURCE_USERNAMEuserapollo- SPRING_DATASOURCE_PASSWORDuserapollo- APOLLO_PORTAL_ENVSdev- DEV_METAhttp://config-service:8080- JAVA_OPTS-Deureka.instance.homePageUrlhttp://portal:8070ports:- 8070:8070depends_on:- config-service- admin-servicenetworks:apollo-network:networks:apollo-network:driver: bridge 
2.3.3、运行 
以指定工程名方式启动 mysql 在 ApolloMysql 文件夹下执行 
docker-compose up -d此时数据库启动其余三个服务启动失败 
然后进行操作建议使用 workbench 
#给用户 userapollo 授权-可以全部授权
CREATEUSERuserapollo% IDENTIFIED BYuserapollo;GRANTALL PRIVILEGES ON ApolloConfigDB.*TOuserapollo%;GRANTALL PRIVILEGES ON ApolloPortalDB.*TOuserapollo%;FLUSH PRIVILEGES;#创建数据库:
CREATE DATABASE ApolloConfigDB;
CREATE DATABASE ApolloPortalDB;#执行 apollo 官方建表初始化 sql
https://github.com/apolloconfig/apollo/tree/master/scripts/sql# 执行开发环境适配 sql
UPDATE ApolloConfigDB.ServerConfig SET Value  http://config-service:8080/eureka/ WHERE (Id  1);
UPDATE ApolloPortalDB.ServerConfig SET Value  {\dev\:\http://config-service:8080\} WHERE (Id  8);然后依次启动 config-service、admin-service、portal portal 可能还会少量报错这是因为初始化配置需要发布下 
2.3.4、 客户端配置 
{apollo: {AppId: helloabp,Env: dev,Cluster: default,MetaServer: http://localhost:8080,Namespaces: [hello.web.json]},ClientId: bestcxxLocal
}3、附录 
3.1、调试可能用到的命令 
docker-compose stop 
docker-compose up -d 3.2、apollo 配置参考 
{MyApollo: {Name: bestcxx}
}