微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

多个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 # 来自外部

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐