Docker Compose Networks

可以在一个docker-compose.yml「A」文件中定义网络,在另外的docker-compose.yml「B」文件中使用网络。

比如,A文件中定义数据库服务:

version: "3.7"

services:
  mysql-blog:
     image: mysql:5.7
     volumes: # 数据卷,映射本地文件夹
       - /data/mysql/blog:/var/lib/mysql
     ports: # 如果不写端口映射的话,外部无法连接该mysql(下方WordPress连接没问题)
       - "13306:3306" # 13306 是外部使用,不同的compose文件中使用时,请使用mysql的端口3306,即container中的端口
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: "Xeroxes6136;cobras"
       MYSQL_DATABASE: blog
       MYSQL_USER: blog
       MYSQL_PASSWORD: blog
     networks:
       mysql-blog:
         aliases:
           - mysql-blog # 给mysql-blog网络起别名,其它服务可通过别名引用
           - mysql-blog2 # 可以有多个别名
networks:
  mongo-blog:
    name: mongo-blog

在B中引用A中的mongo-blog网络:

version: "3.7"
 services:
   blog:
     image: wordpress:latest
     volumes:
       - /data/wordpress/blog:/var/www/html
     ports:
       - "63380:80"
     restart: always
     privileged: true
     environment:
       WORDPRESS_DB_HOST: mysql-blog:3306 # 这里使用网络名字即可连接
       WORDPRESS_DB_NAME: your-db-name
       WORDPRESS_DB_USER: your-db-user
       WORDPRESS_DB_PASSWORD: your-db-password
       # 定义域名
       WORDPRESS_CONFIG_EXTRA: "define('WP_HOME','your-blog-domain'); define('WP_SITEURL','your-blog-domain');"
     networks:
       - mysql-blog
networks:
   mysql-blog:
     external: # 表示使用外部的网络
       name: mysql-blog

在其它container自己的代码中,也可以使用mysql-blog:3306这样的字符串去连数据库。

Leave a Reply

Your email address will not be published. Required fields are marked *