一台主机通过 docker compose 编排运行一个系统没什么问题,如果要运行多个相同的系统怎么做呢?
以部署 wordpress(LNMP)为例,其实很简单,只需要修改三处:
1、对外暴露端口
修改docker-compose.xml中对外暴露端口的ports:
(1)nginx:
(2)mysql:
2、容器 name
修改 docker-compose.xml 中容器的 name:
nginx、wordpress、mysql 分别修改(添加)container_name
为唯一即可
3、数据库涉及 ip:port 的配置
对于 WordPress,Mysql 中有保存访问 wordpress 网站的 host 配置(若没有域名,是 ip+port),需要将其手动改为第一步配置的暴露出的 nginx 端口+ip。
4、若出现服务混淆错乱
所谓服务混淆错乱,如:一个 docker-compose.yml 部署的 wordpress1,另一个 docker-compose.yml 部署的 wordpress2。可能有时出现 wordpress2 调用了 wordpress1 的 Mysql 服务。
原因:可能是两个 docker-compose 编排的 Mysql 内部端口一样。以及共用了一个网络。
解决:
(1)wordpress2 新建一个网络
docker network create wordpress2
(2)修改 docker-compose.xml 容器所用网络为:wordpress2
修改所用网络:
networks: wordpress2: external: true
修改每个容器(mysql 为例)网络:
networks: wordpress2: aliases: - mysql