0


Docker Compose网络系列--多个docker-compose进行网络连接

原文网址:Docker Compose实战系列--多个docker-compose进行网络连接_IT利刃出鞘的博客-CSDN博客

简介

说明

  1. 本文介绍如何实现多个docker-compose的通信。

需求场景

  1. docker compose中,1docker-compose.yml就是1个应用。默认情况下,单个docker-compose.yml中的services下的容器是可以进行网络连接的。
  2. 多个docker-compose.yml中的services下的容器是无法进行网络连接的,让多个应用进行网络连接的方法:指定一个中间网络,让这两个应用都连接到这个中间网络。

本文要达到的目的

2个docker compose:一个数据库和一个app(halo),它们要进行网络连接。

情景1:新建多个docker compose

概述

1. 建立中间网络

  1. docker network create app_net

2. 每个docker-compose.yml连接到中间网络

一级配置都加上如下配置:

  1. networks:
  2. custom_app_net:
  3. name: app_net
  4. external: true

需要进行网络连接的services加上networks配置:

  1. services:
  2. app:
  3. # image:
  4. # container_name:
  5. # ports:
  6. # volumes:
  7. # environment:
  8. networks:
  9. - custom_app_net

纯docker可以这样做:docker xxx --net app_net

详述

1.创建中间网络

  1. docker network create app_net

2.mysql的docker-compose.yml

  1. version: '3.1'
  2. services:
  3. mysqldb:
  4. # 启动方式
  5. #restart: unless-stopped
  6. # 镜像
  7. image: mysql:8.0
  8. # 容器名字
  9. container_name: mysql8
  10. privileged: true
  11. environment:
  12. # 时区
  13. TZ: Asia/Shanghai
  14. # root用户的密码
  15. MYSQL_ROOT_PASSWORD: 123456
  16. command:
  17. --character-set-server=utf8mb4
  18. --collation-server=utf8mb4_general_ci
  19. --explicit_defaults_for_timestamp=true
  20. ports:
  21. - 3306:3306
  22. volumes:
  23. - /work/db/mysql8/log:/var/log/mysql
  24. - /work/db/mysql8/data:/var/lib/mysql
  25. - /work/db/mysql8/conf:/etc/mysql/conf.d
  26. networks:
  27. - custom_app_net
  28. networks:
  29. custom_app_net:
  30. name: app-net
  31. external: true

3.app的docker-compose.yml

  1. version: '3.1'
  2. services:
  3. halo:
  4. # 启动方式
  5. #restart: unless-stopped
  6. # 镜像
  7. image: halohub/halo:1.6.0
  8. # 容器名字
  9. container_name: halo1.6.0
  10. ports:
  11. - 8090:8090
  12. volumes:
  13. - /work/app/halo/config/:/root/.halo
  14. environment:
  15. - VIRTUAL_PORT=8090
  16. #- VIRTUAL_HOST=localhost # 你的博客地址(务必修改)
  17. #- LETSENCRYPT_HOST=localhost # 你的博客地址 (务必修改)
  18. #- LETSENCRYPT_EMAIL=i@example.com # 证书所有者的邮箱,快过期时会提醒(务必修改)
  19. - MAX_UPLOAD_SIZE=10m
  20. - JVM_XMS=256m
  21. - JVM_XMX=256m
  22. networks:
  23. - custom_app_net
  24. networks:
  25. custom_app_net:
  26. name: app-net
  27. external: true

app中直接将ip换成mysql的容器名字,例如:

  1. spring:
  2. datasource:
  3. # MySQL database configuration.
  4. driver-class-name: com.mysql.cj.jdbc.Driver
  5. url: jdbc:mysql://mysql8:3306/dbName?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
  6. username: user1
  7. password: 123456

情景2:1个docker compose容器已存在

本处假设mysql8这个容器已经存在了。

概述

1. 建立中间网络

  1. docker network create app_net

2.将mysql8连接到中间网络

  1. docker network connect app_net mysql8

3. app的docker-compose.yml****连接到中间网络

一级配置都加上如下配置:

  1. networks:
  2. custom_app_net:
  3. name: app_net
  4. external: true

需要进行网络连接的services加上networks配置:

  1. services:
  2. app:
  3. # image:
  4. # container_name:
  5. # ports:
  6. # volumes:
  7. # environment:
  8. networks:
  9. - custom_app_net

纯docker可以这样做:docker xxx --net app_net

详述

** 1.创建中间网络**

  1. docker network create app_net

2. 将mysql8连接到中间网络

  1. docker network connect app_net mysql8

3.app的docker-compose.yml

  1. version: '3.1'
  2. services:
  3. halo:
  4. # 启动方式
  5. #restart: unless-stopped
  6. # 镜像
  7. image: halohub/halo:1.6.0
  8. # 容器名字
  9. container_name: halo1.6.0
  10. ports:
  11. - 8090:8090
  12. volumes:
  13. - /work/app/halo/config/:/root/.halo
  14. environment:
  15. - VIRTUAL_PORT=8090
  16. #- VIRTUAL_HOST=localhost # 你的博客地址(务必修改)
  17. #- LETSENCRYPT_HOST=localhost # 你的博客地址 (务必修改)
  18. #- LETSENCRYPT_EMAIL=i@example.com # 证书所有者的邮箱,快过期时会提醒(务必修改)
  19. - MAX_UPLOAD_SIZE=10m
  20. - JVM_XMS=256m
  21. - JVM_XMX=256m
  22. networks:
  23. - custom_app_net
  24. networks:
  25. custom_app_net:
  26. name: app-net
  27. external: true

app中直接将ip换成mysql的容器名字,例如:

  1. spring:
  2. datasource:
  3. # MySQL database configuration.
  4. driver-class-name: com.mysql.cj.jdbc.Driver
  5. url: jdbc:mysql://mysql8:3306/dbName?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
  6. username: user1
  7. password: 123456
标签: docker 运维 容器

本文转载自: https://blog.csdn.net/feiying0canglang/article/details/127991493
版权归原作者 IT利刃出鞘 所有, 如有侵权,请联系我们删除。

“Docker Compose网络系列--多个docker-compose进行网络连接”的评论:

还没有评论