可以在一个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这样的字符串去连数据库。