通过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

bannerAds