栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

多个docker-compose共享网络并相互调用服务

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多个docker-compose共享网络并相互调用服务

在工作中我们可能需要数据库和api接口分开部署的情况,如果都用docker-compose部署的话,
在有的操作系统中可能无法使用(ip+端口)连接数据库,必须使用服务名称去连接。
这时我们就需要让这两个docker-compose启动的服务共享网络,这样就可以相互调用服务了

数据库的docker-compose文件

我们可以使用 docker network create my_net 创建一个网络,之后每个docker-compose.yml引用即可也可以先启动数据库服务,最后api服务的docker-compose.yml引用数据库的网络即可,这里我使用这种方式

version: '3'
services:
  db-mysql:
    image: mysql:5.7
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    ports:
      - "3306:3306"
    container_name: mysql-container
    networks:
      - my_net
    environment:
      - MYSQL_ROOT_PASSWORD=root

  db-mysql:
    image: redis:5.0.5-alpine
    command: redis-server --appendonly yes
    restart: always
    ports:
      - "6379:6379"
    container_name: redis-container
    networks:
      - my_net

networks:
  my_net:
    driver: bridge

这里需要指定网络 my_net,指定后网络名称为当前文件夹加上_my_net,如果不指定会使用当前文件夹的名称加上_default查看网络 docker network ls这里我查看的是 app_my_net api的docker-compose文件

version: '3'
services:
  api:
    restart: always
    container_name: web-api
    build:
      context: ./web-api # 指定设定上下文根目录,然后以该目录为准指定Dockerfile
      dockerfile: Dockerfile
    networks:
      - app_my_net # 指定网络
    ports:
        - "8001:7001"
    environment:
     TZ: Asia/Shanghai

  web:
    image: nginx:1.17.0
    privileged: true
    restart: always
    container_name: web-front
    ports:
        - "8080:80"
    volumes:
      - ./web-front/nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./web-front:/usr/share/nginx/html

networks:
  app_my_net:
    external: true # 来自外部

在使用共享网络后,我们在连接 mysql和redis的使用就可以使用服务名称,db-mysql或db-mysql

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/752380.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号