通过docker compose (docker-compose)启动多个服务
当你想要同时启动多个项目的界面时,如果查询到的结果都是关于“端口冲突,请关闭”,或者是“关闭在其他地方运行的docker”,都是基于“不同时启动”的前提下的文章。我将以相反的意图撰写此文章。
Notes:
Please note that Chinese characters are not displayed properly here. Please refer to the original text for accurate translation.
由于现场同时进行着两三个开发项目,每次都重新启动docker很麻烦。
我們正在使用以下機器環境來進行確認。
macOS Catalina 版本 10.15.7
docker 桌面版 版本 3.3.3
总结
编辑yml文件以确保项目之间的端口不重叠,然后使用”docker-compose -p other up -d”或者”docker compose -p other up -d”命令启动。
做过的事情 de
总结来说,要修改docker-compose.yml文件的端口号,但是当我们想同时启动项目A和项目B时,假设yml文件如下所示。
version: '3'
services:
nginx:
container_name: xxx_nginx
image: xxx:nginx_v4
volumes:
- ./server:/data/www
ports:
- "80:80"
depends_on:
- php
php:
container_name: xxx_php
image: xxx:php_v6
volumes:
- ./server:/data/www
redis:
container_name: xxx_redis
image: xxx:redis_latest
ports:
- "6379:6379"
volumes:
- "./data/redis:/data"
version: '3'
services:
nginx:
container_name: nginx
image: xxx:nginx_latest
volumes:
- ./server:/data/www
ports:
- "80:80"
depends_on:
- php
php:
container_name: php
image: xxx:php_latest
volumes:
- ./server:/data/www
redis:
container_name: redis
image: xxx:redis_latest
ports:
- "6379:6379"
volumes:
- "./data/redis:/data"
当您使用命令 docker-compose up -d 或 docker compose up -d 来启动项目A后,查看状态会如下所示。
% docker compose ps
NAME SERVICE STATUS PORTS
xxx_nginx nginx running 443/tcp, 0.0.0.0:80->80/tcp, :::80->80/tcp
xxx_php php running 9000/tcp
xxx_redis redis running 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp
由于项目A和项目B中的Nginx和Redis端口重复,所以需要将项目B的yml文件进行以下修改。
version: '3'
services:
nginx:
container_name: nginx
image: xxx:nginx_latest
volumes:
- ./server:/data/www
ports:
- "81:80" # ←ここを変更
depends_on:
- php
php:
container_name: php
image: xxx:php_latest
volumes:
- ./server:/data/www
redis:
container_name: redis
image: xxx:redis_latest
ports:
- "6380:6379" # ←ここを変更
volumes:
- "./data/redis:/data"
然后,通过以下命令docker-compose -p other up -d或docker compose -p other up -d来启动。
项目A连接到 http://localhost/ ,项目B连接到 http://localhost:81/ 。
请提供URL参考
整理docker-compose端口设置
关于docker-compose.yml的编写方式进行解释
启动多个docker-compose