首页 > 解决方案 > docker-compose up vs docker-compose up service1 service2

问题描述

我在下面有以下 docker-compose 文件。如果我运行docker-compose up一切正常。但是,如果我这样做docker-compose up minio1 minio2 minio3 minio4,则不会创建卷,并且看不到以下日志。它不会创建我假设的卷。我在真正的 docker-compose.yml 文件中有许多其他服务,我不想一直运行docker-compose up和启动每个服务。我如何只启动这 4 个服务并创建卷/网络?

这不会出现在 docker-compose up minio1 minio2 ...

Creating volume "robot_models1" with default driver
Creating volume "robot_models2" with default driver  
Creating volume "robot_models3" with default driver  
Creating volume "robot_models4" with default driver

码头工人-compose.yml

version: '3'
services:
  minio1:
    image: minio/minio:RELEASE.2018-07-10T01-42-11Z
    volumes:
      - models1:/export
    ports:
      - "9001:9000"
    environment:
      MINIO_ACCESS_KEY: access123123
      MINIO_SECRET_KEY: secret123123
    command: server http://minio1/export http://minio2/export http://minio3/export http://minio4/export

  minio2:
    image: minio/minio:RELEASE.2018-07-10T01-42-11Z
    volumes:
      - models2:/export
    ports:
      - "9002:9000"
    depends_on:
      - minio1
    environment:
      MINIO_ACCESS_KEY: access123123
      MINIO_SECRET_KEY: secret123123
    command: server http://minio1/export http://minio2/export http://minio3/export http://minio4/export

  minio3:
    image: minio/minio:RELEASE.2018-07-10T01-42-11Z
    volumes:
      - models3:/export
    ports:
      - "9003:9000"
    depends_on:
      - minio2
    environment:
      MINIO_ACCESS_KEY: access123123
      MINIO_SECRET_KEY: secret123123
    command: server http://minio1/export http://minio2/export http://minio3/export http://minio4/export

  minio4:
    image: minio/minio:RELEASE.2018-07-10T01-42-11Z
    volumes:
      - models4:/export
    ports:
      - "9004:9000"
    depends_on:
      - minio3
    environment:
      MINIO_ACCESS_KEY: access123123
      MINIO_SECRET_KEY: secret123123
    command: server http://minio1/export http://minio2/export http://minio3/export http://minio4/export

  ## By default this config uses default local driver,
  ## For custom volumes replace with volume driver configuration.
volumes:
  models1:
  models2:
  models3:
  models4:

码头工人撰写版本:

docker-compose version 1.21.2, build a133471
docker-py version: 3.4.1
CPython version: 3.6.5
OpenSSL version: OpenSSL 1.0.2o  27 Mar 2018

标签: dockerdocker-composedocker-for-mac

解决方案


您是否真的检查过是否创建了卷?运行docker-compose up minio1 minio2 minio3 minio4将启动这些容器及其所有依赖项,例如depends_on容器和卷,但只会输出命令中明确列出的容器的日志。

即实际上创建了卷,但这只是没有记录到您,因为您只附加到容器的日志!(并且卷是由docker-compose容器本身而不是由容器本身创建的)。

我在真正的 docker-compose.yml 文件中有许多其他服务,我不想一直运行 docker-compose up 并启动​​每个服务。

docker-compose1.28.0开始,新的服务配置文件就是为此而生的!您可以将profiles服务标记为仅在特定配置文件中启动:

services:
  minio1:
    profiles: ["minio"]
    #...

  minio2:
    profiles: ["minio"]
    #...

  minio3:
    profiles: ["minio"]
    #...

  minio4:
    profiles: ["minio"]
    #...

  service1:
    profiles: ["other"]
    #...

  service2:
    profiles: ["other"]
    #...

  service3:
    profiles: ["other"]
    #...

  service4:
    profiles: ["other"]
    #...
docker-compose up # start only your default services (without `profiles`)
docker-compose --profile minio up # start default and minio services
docker-compose --profile other up # start default and "other" services

您还可以考虑将服务拆分为多个docker-compose.yml文件

# only start services in docker-compose.minio.yml
docker-compose -f docker-compose.minio.yml up

# merge docker-compose.minio.yml with docker-compose.yml
# and start all contained services
docker-compose -f docker-compose.yml -f docker-compose.minio.yml up

推荐阅读