青岛制作企业网站的公司,营销型网站策划 建设的考试题,wordpress投票插件wp-polls,松江网站设计需求
项目中的数据库为mysql#xff0c;如果将端口映射到宿主机上#xff0c;容易被工具扫描出#xff0c;且随着国产化的进程推进#xff0c;mysql将不被允许。为了提高安全性与满足项目需求#xff0c;这里采用隐藏mysql端口方式#xff0c;不映射宿主机端口#xff…需求
项目中的数据库为mysql如果将端口映射到宿主机上容易被工具扫描出且随着国产化的进程推进mysql将不被允许。为了提高安全性与满足项目需求这里采用隐藏mysql端口方式不映射宿主机端口仅允许docker容器间访问。
系统部署说明
环境
Centos 7Docker version 24.0.6Docker Compose version v2.16.0
新增docker网络
由于我们需要新建指定ip的容器docker默认网络是随机分配ip无法实现需求。新建网络步骤如下
# 查看docker网卡
docker network ls
# 查看具体信息通常默认网卡为bridge
docker network inspect 网卡id /网卡NAME
docker network inspect bridge
# 创建网络注意不要和上面已经存在的网段相同
docker network create --subnet172.18.0.0/16 myself_network报错处理 Error response from daemon: Pool overlaps with other one on this address space 说明172.18网段已经被使用需要修改一个网段比如172.36注意后续容器中使用的所有网段需要同步修改。
数据库部署
创建/sdb/db/data目录并下载初始化数据库脚本test.sql进入目录将初始化脚本放在/sdb/db/data目录下。 PS将数据库.sql文件映射到 MySQL 容器的 /docker-entrypoint-initdb.d/ 目录下在容器首次启动时文件会自动执行重启容器将不再执行当前脚本。
方法一docker run方式启动容器
直接在/sdb/db/data目录下执行以下docker run命令启动容器并初始化test.sql脚本。
# 使用以上创建的网络给容器指定一个ip
docker run --name datacenter-mysql -e MYSQL_ROOT_PASSWORD123456 -e TZAsia/Shanghai --network myself_network -v /sdb/db/data/test.sql:/docker-entrypoint-initdb.d/test.sql -v /sdb/db/data:/var/lib/mysql --ip 172.18.0.136 -d mysql:8.0.27 --default-authentication-pluginmysql_native_password --lower-case-table-names1
# 查看容器ip
docker inspect datacenter-mysql|grep IPAddress方法二docker-compose方式启动
在/sdb/db/data目录下创建docker-compose.yml文件内容如下
version: 3# 这里需要指定使用以上创建的网络否则会报错
networks:myself_network:external: trueservices:mysql-test:image: mysql:8.0.27container_name: datacenter-mysqlenvironment:- MYSQL_ROOT_PASSWORD123456- TZAsia/Shanghaivolumes:- /sdb/db/data/test.sql:/docker-entrypoint-initdb.d/test.sql- /sdb/db/data:/var/lib/mysqlcommand:- --default-authentication-pluginmysql_native_password- --lower-case-table-names1networks:my_custom_network:ipv4_address: 172.18.0.136restart: always启动容器
docker-compose up -d服务部署说明
配置完数据库固定ip我们可以在服务中使用启动容器的环境变量或配置文件都可以docker-compose文件大致如下具体不细展开。
version: 3.7networks:myself_network:external: trueservices:web:image: web:1.0# 容器名container_name: test-webrestart: alwaysports:- 80:80networks:myself_network:# 注意这个地址网段需要与数据库一致ipv4_address: 172.18.0.3# 启动数据中台Java服务端容器api:image: api:1.0# 容器名container_name: test-apirestart: alwaysports:- 8080:8080environment: # 这里可以设置环境变量使用以上配置的mysql数据库ip端口DB_JDBC_URL: jdbc:mysql://127.18.0.136:3306/testDB_USERNAME: rootDB_PASSWORD: 123456networks:myself_network:# 注意这个地址网段需要与数据库一致ipv4_address: 172.18.0.4启动服务
docker-compose up -d