本文将介绍如何使用 Docker 创建多 docker-compose 互通网络服务。我们将会讨论如何创建一个公共的 Mysql 数据库,然后再创建一个服务来连接我们的公用本地 Mysql 数据库。同时,我们还会解决如何处理那些在 docker-compose 上将数据库一起写的服务,以及如何在 docker-compose 上运行能共用数据的服务。
简介
Docker Compose 是一个用于定义和运行多个容器应用程序的工具。使用 Docker Compose 可以轻松地运行多个容器,并可以创建一个公共网络来让这些容器之间互相通信。在这篇文章中,我们将会使用 Docker Compose 来创建一个公共网络,并将我们的服务加入到这个网络中,以便它们之间可以互相通信。

创建公共网络 mysql
我们首先需要创建一个公共的网络 mysql。我们可以使用以下命令来创建一个名为 mysql 的网络:
docker network create mysql
创建完成后,我们可以使用以下命令来查看创建的网络:
docker network ls

docker-compose 运行公共 mysql 服务
现在我们已经创建了一个名为 mysql 的公共网络,接下来我们将使用 docker-compose 来运行一个 Mysql 服务,并将它添加到这个网络中。
在你的项目文件夹下,创建一个名为 docker-compose.yml 的文件,并将以下代码添加到文件中:
version: "3.8"
services:
mysql8:
container_name: mysql8
image: mysql:8
#restart: always 本地运行就不需要自启了
command: --default-authentication-plugin=mysql_native_password
ports:
- "3306:3306"
environment:
TZ: Asia/Shanghai
MYSQL_ROOT_PASSWORD: chengzz
hostname: mysql8
volumes:
- "~/Docker/mysql8/data:/var/lib/mysql"
- "~/Docker/mysql8/my.cnf:/etc/mysql/conf.d/my.cnf"
networks:
- mysql
networks:
mysql:
external: true
# 自己手动创建公共网络mysql
# docker network create mysql
该代码指定了我们要创建的服务为 mysql8,它使用最新的 Mysql8 镜像,并设置了 Mysql 的 root 密码。我们还将服务添加到了名为 mysql 的公共网络中。
接下来,我们可以使用以下命令来启动服务:
docker-compose up -d
docker-compose 运行我们的服务如 wordpress
现在我们已经创建了一个公共的 Mysql 服务,并将它添加到了 mysql 网络中,我们可以使用 docker-compose 来运行我们的服务,例如 WordPress。
在你的项目文件夹下,创建一个名为 docker-compose.yml 的文件,并将以下代码添加到文件中:
version: "3.8"
services:
wordpress:
container_name: chengzz
image: wordpress:latest
ports:
- "80:80"
volumes:
- ~/Docker/wordpress/html:/var/www/html
environment:
WORDPRESS_DB_HOST: mysql8:3306
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: chengzz
WORDPRESS_DB_NAME: chengzz
# 连接mysql网络
networks:
- mysql
networks:
mysql:
external: true
其中,我们指定了 wordpress 服务所使用的镜像为 wordpress,同时将其暴露在 80 端口,并指定其依赖于 db 服务,这样我们才能保证在 wordpress 服务启动前 db 服务已经启动。
然后我们在 db 服务中添加了 WORDPRESS_DB_HOST、WORDPRESS_DB_USER、WORDPRESS_DB_PASSWORD 和 WORDPRESS_DB_NAME 等环境变量,以及将数据映射到容器中的/var/www/html 目录,用于持久化 wordpress 的数据。同时,我们也将服务 加入到了 mysql 网络中。
最后,在文件的末尾,我们定义了 mysql 网络,并指定它的外部名称为 mysql,这样我们的服务才能正确地连接到该网络。
完成后,我们可以使用以下命令在后台启动 wordpress 服务:
docker-compose up -d
启动后,我们可以在浏览器中访问 http://localhost:80 来访问 wordpress 站点,它已经连接到了公共 mysql 服务。
这样,我们就成功地创建了一个公共网络 mysql,并将我们的服务,如 wordpress,连接到该网络中,实现了多 docker-compose 互通网络服务。

总结
在本文中,我们介绍了如何使用 Docker 创建多 docker-compose 互通网络服务。首先,我们创建了一个公共网络 mysql,然后在该网络上启动了一个 mysql 服务。最后,我们将我们的服务,如 wordpress,连接到该网络上,以便可以使用公共 mysql 服务。
使用 Docker 创建多 docker-compose 互通网络服务可以帮助我们更好地管理我们的应用程序,同时也可以减少应用程序之间的耦合性,提高应用程序的可移植性和可伸缩性。希望本文可以对你有所帮助。