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

这篇具有很好参考价值的文章主要介绍了Docker Compose网络系列--多个docker-compose进行网络连接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

简介

说明

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

需求场景

docker compose中,1个docker-compose.yml就是1个应用。默认情况下,单个docker-compose.yml中的services下的容器是可以进行网络连接的。

多个docker-compose.yml中的services下的容器是无法进行网络连接的,让多个应用进行网络连接的方法:指定一个中间网络,让这两个应用都连接到这个中间网络。

本文要达到的目的

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

情景1:新建多个docker compose

概述

1. 建立中间网络

docker network create app_net

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

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

networks:
  custom_app_net:
    name: app_net
    external: true

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

services:
  app:
    # image: 
    # container_name: 
    # ports:
    # volumes:
    # environment:
    networks:
      - custom_app_net

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

详述

1.创建中间网络

docker network create app_net

2.mysql的docker-compose.yml

version: '3.1'
services:
    mysqldb:
        # 启动方式
        #restart: unless-stopped
        
        # 镜像
        image: mysql:8.0
        # 容器名字
        container_name: mysql8
        privileged: true
        environment:
          # 时区
          TZ: Asia/Shanghai
          # root用户的密码
          MYSQL_ROOT_PASSWORD: 123456
        command:
          --character-set-server=utf8mb4
          --collation-server=utf8mb4_general_ci
          --explicit_defaults_for_timestamp=true
        ports:
          - 3306:3306
        volumes:
          - /work/db/mysql8/log:/var/log/mysql
          - /work/db/mysql8/data:/var/lib/mysql
          - /work/db/mysql8/conf:/etc/mysql/conf.d
        networks:
          - custom_app_net

networks:
  custom_app_net:
    name: app-net
    external: true

3.app的docker-compose.yml

version: '3.1'
services:
  halo:
    # 启动方式
    #restart: unless-stopped

    # 镜像
    image: halohub/halo:1.6.0
    # 容器名字
    container_name: halo1.6.0
    ports:
      - 8090:8090
    volumes:
      - /work/app/halo/config/:/root/.halo
    environment:
      - VIRTUAL_PORT=8090
      #- VIRTUAL_HOST=localhost  # 你的博客地址(务必修改)
      #- LETSENCRYPT_HOST=localhost # 你的博客地址 (务必修改)
      #- LETSENCRYPT_EMAIL=i@example.com # 证书所有者的邮箱,快过期时会提醒(务必修改)
      - MAX_UPLOAD_SIZE=10m
      - JVM_XMS=256m
      - JVM_XMX=256m
    networks:
      - custom_app_net

networks:
  custom_app_net:
    name: app-net
    external: true

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

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

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

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

概述

1. 建立中间网络

docker network create app_net

2.将mysql8连接到中间网络

docker network connect app_net mysql8

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

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

networks:
  custom_app_net:
    name: app_net
    external: true

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

services:
  app:
    # image: 
    # container_name: 
    # ports:
    # volumes:
    # environment:
    networks:
      - custom_app_net

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

详述

 1.创建中间网络

docker network create app_net

2. 将mysql8连接到中间网络

docker network connect app_net mysql8

3.app的docker-compose.yml

version: '3.1'
services:
  halo:
    # 启动方式
    #restart: unless-stopped

    # 镜像
    image: halohub/halo:1.6.0
    # 容器名字
    container_name: halo1.6.0
    ports:
      - 8090:8090
    volumes:
      - /work/app/halo/config/:/root/.halo
    environment:
      - VIRTUAL_PORT=8090
      #- VIRTUAL_HOST=localhost  # 你的博客地址(务必修改)
      #- LETSENCRYPT_HOST=localhost # 你的博客地址 (务必修改)
      #- LETSENCRYPT_EMAIL=i@example.com # 证书所有者的邮箱,快过期时会提醒(务必修改)
      - MAX_UPLOAD_SIZE=10m
      - JVM_XMS=256m
      - JVM_XMX=256m
    networks:
      - custom_app_net

networks:
  custom_app_net:
    name: app-net
    external: true

 app中直接将ip换成mysql的容器名字,例如:文章来源地址https://www.toymoban.com/news/detail-489614.html

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

到了这里,关于Docker Compose网络系列--多个docker-compose进行网络连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Dockerfile与docker-compose容器编排(Docker系列第3章,共3章)

    不同的组件需要不同的docker配置(例如容器卷,端口,环境变量等),使用你懂得工具看hub.docker.com官方手册。 不要死记硬背,因为这种东西不是天天要写,过段时间就忘了,很容易引起挫败感。 Dockerfile或者Docker-compose的编写,可以安装一些编辑器插件辅助编写。 非官方中

    2024年04月15日
    浏览(31)
  • docker-compose 网络配置- IP 主机名 hosts配置

    配置IP 配置 主机名 配置hosts 下面的配置可以修改/etc/hosts文件: 追加 zk 172.2.0.101 、 kf 172.2.0.102 配置完成进入容器,可查看验证 完整例子 创建一个网络 配置 单节点kafka、zookeeper,kafka通过主机名 访问zookeeper 3 验证

    2024年02月07日
    浏览(30)
  • Docker_安装使用_容器镜像_Docker-compose_常用指令_网络配置

    相关概念 微服务虽然具备各种各样的优势,但服务的拆分通用给部署带来了很大的麻烦。 分布式系统中,依赖的组件非常多,不同组件之间部署时往往会产生一些冲突。 在数百上千台服务中重复部署,环境不一定一致,会遇到各种问题。 Docker解决依赖的兼容问题: Docker允

    2024年02月02日
    浏览(46)
  • 【六祎 - Docker】Docker-compose;什么是Docker-compose

    从 2023 年 6 月底开始,Compose V1 将不再受支持,并将从所有 Docker Desktop 版本中删除。 确保使用 docker compose CLI 插件或通过激活 Docker Desktop 中的 Use Docker Compose V2 设置切换到 Compose V2。有关详细信息,请参阅 Compose 的演变。 Compose 是一个用于定义和运行多容器 Docker 应用程序的工

    2023年04月21日
    浏览(31)
  • 【docker】 docker-compose如何更新services镜像 | docker-compose如何更新某个镜像 | docker-compose如何重启某个服务

    更新镜像: 首先,确保你已经获取了最新的镜像版本。这可以通过 docker pull 命令来实现,或者直接使用 docker-compose pull 命令更新所有服务的镜像。 拉取 指定 镜像 - 代码如下: 拉取 所有 镜像 - 代码如下: 注意:在拉取更新的镜像后,docker-compose不会自动重新启动服务。你需要

    2024年02月06日
    浏览(30)
  • Docker Compose网络系列--网络的配置

    原文网址:Docker Compose网络系列--网络的配置_IT利刃出鞘的博客-CSDN博客 说明         本文介绍Docker Compose的网络的配置。 官网网址 https://docs.docker.com/compose/networking/ compose的默认配置         默认情况下,Compose会为应用创建一个网络,服务(docker-compose.yaml中的services项)

    2024年02月06日
    浏览(34)
  • docker-compose和docker compose的区别

    在docker实际使用中,经常会搭配Compose,用来定义和运行多个 Docker 容器。使用时会发现,有时候的指令是docker-compose,有时候是docker compose,下面给出解释。 docker官方文档:https://docs.docker.com/compose/install/linux/ 官方文档中其实已经给出了答案:Compose分为V1和V2版本,安装方式分

    2024年01月19日
    浏览(37)
  • docker-compose build 和 docker-compose up -d 的区别

    docker-compose build 命令用于构建 Docker Compose 文件中定义的服务的镜像,根据 docker-compose.yml 文件中的配置信息,构建需要的镜像并且将它们打上标签。构建镜像是一个比较耗时的过程,可能需要从 Docker Hub 上拉取镜像、下载依赖等,而且在构建完成后不会启动容器。 docker-comp

    2024年02月13日
    浏览(70)
  • 【Docker-compose】基于Docker-compose创建LNMP环境并运行Wordpress网站平台

    参见使用Docker构建LNMP环境并运行Wordpress网站平台 Docker-Compose将所管理的容器分为三层,分别是 项目(project)、服务(service)以及容器(container) 。 Docker-Compose运行目录下的所有文件组成一个项目, 若无特殊指定项目名即为当前目录名 。 一个工程当中可包含多个服务,每个

    2024年02月15日
    浏览(36)
  • docker-compose up -d和docker-compose up --build的补充

    docker-compose up -d 命令用于启动已定义在 docker-compose.yml 文件中的服务容器,并以守护进程的方式在后台运行。 具体解释如下: docker-compose : 是一个用于定义和运行多个容器应用的工具。 up : 用于创建并启动容器。 -d 或 --detach : 表示以守护进程的方式运行容器,即在后台运行,

    2024年02月15日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包