扬州建设教育信息网站,广州编程培训机构哪里好,php网站插件,邹平县建设局网站docker 容器添加指定网络地址
在搭建halo博客时#xff0c;准备让 halo、mysql8.1、nginx 三个容器在同一个网段中#xff0c;并指定IP。 实现docker内部容器之间网络互通。
查看容器网络信息命令
docker inspect 容器名各容器部署成功后网络效果如下#xff1a;
nginx …docker 容器添加指定网络地址
在搭建halo博客时准备让 halo、mysql8.1、nginx 三个容器在同一个网段中并指定IP。 实现docker内部容器之间网络互通。
查看容器网络信息命令
docker inspect 容器名各容器部署成功后网络效果如下
nginx 网络
IP172.10.0.4 网关 172.10.0.1
halo 网络
IP172.10.0.2 网关 172.10.0.1
halodb 网络halo数据库 mysql8.1
IP172.10.0.3 网关 172.10.0.1
部署流程如下
halo 博客部署
由于开始前我没有创建自定义网络。 我采用的是 部署halo时创建网络。 如果需要创建自定义网络看 》》》自定义创建网络 如果已经有自定义网络将 halo docker-compose.yaml文件中 networks 配置 按照下面 nginx docker-compose.yaml文件 networks 来修改。 采用docker-compose.yaml 文件部署halo 和mysql。 进入halo 目录 执行 docker-compose up -d 命令 容器部署成功后会同时创建 mynetwork 网络。
halo和数据库 部署 docker-compose.yaml文件如下
version: 3
services:
#halo 配置halo:image: halohub/halo:2.11container_name: halorestart: on-failure:3depends_on:halodb:condition: service_healthynetworks:mynetwork: #网络名称ipv4_address: 172.10.0.2 ###halo指定网络volumes:- ./halo2:/root/.halo2ports:- 8090:8090healthcheck:test: [CMD, curl, -f, http://localhost:8090/actuator/health/readiness]interval: 30stimeout: 5sretries: 5start_period: 30scommand:- --spring.r2dbc.urlr2dbc:pool:mysql://halodb:3306/halo- --spring.r2dbc.usernameroot# MySQL 的密码请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。- --spring.r2dbc.password123456- --spring.sql.init.platformmysql# 外部访问地址请根据实际需要修改- --halo.external-urlhttp://47.98.237.238:8090/
#halo 数据库配置halodb:image: mysql:8.1.0container_name: halodbrestart: on-failure:3networks:mynetwork: #网络名称ipv4_address: 172.10.0.3 ###mysql指定网络command: - --default-authentication-plugincaching_sha2_password- --character-set-serverutf8mb4- --collation-serverutf8mb4_general_ci- --explicit_defaults_for_timestamptruevolumes:- ./mysql:/var/lib/mysql- ./mysqlBackup:/data/mysqlBackupports:- 33060:3306healthcheck:test: [CMD, mysqladmin, ping, -h, 127.0.0.1, --silent]interval: 3sretries: 5start_period: 30senvironment:# 请修改此密码并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值- MYSQL_ROOT_PASSWORD123456- MYSQL_DATABASEhalo
# 创建网络创建成功后网络名称 halo_mynetwork
# 创建网络过程中 会将文件名 halo 作为前缀。
# 如果已经有自定义网络就将networks 配置 按照下面nginx 来配置即可。
networks:mynetwork: ###网络名称driver: bridge ###网络模式 桥接ipam:config:- subnet: 172.10.0.0/24gateway: 172.10.0.1查看当前容器存在的网络
docker network ls部署好 halo 和mysql 后创建的网络为 halo_mynetwork
nginx 部署指定网络和挂载目录
nginx 部署 docker-compose.yaml 文件如下
version: 3services:nginx:image: nginx # 镜像名称container_name: mynginx # 容器名字restart: always # 开机自动重启networks:halo_mynetwork:ipv4_address: 172.10.0.4ports: # 端口号绑定宿主机:容器内- 8080:80- 443:443volumes: # 目录映射宿主机:容器内- /home/docker/nginx/nginx.conf:/etc/nginx/nginx.conf ###配置文件- /home/docker/nginx/log:/var/log/nginx ###这里面放置日志- /home/docker/nginx/html:/html ###这里面放置项目目录- /home/docker/nginx/conf.d:/etc/nginx/conf.d
#网络配置
networks:halo_mynetwork: ### 网络名称external: true ###外部网络错误信息提示
执行docker-compose up -d 命令时报如下错误
// 是因为网络不存在查看docker-compose.yaml文件中网络配置是否正确。
service nginx refers to undefined network halo_mynetwork: invalid compose project// docker-compose.yaml 文件编码不正确
parsing /home/docker/nginx/docker-compose.yml: yaml: invalid leading UTF-8 octet// 文件格式化不正确比如不能使用 tab进行缩进采用空格键。
parsing /home/docker/nginx/docker-compose.yml: yaml: line 7: found character that cannot start any token