docker-compose up vs docker-compose up service1 service2

时间:2018-07-11 02:57:07

标签: docker docker-compose docker-for-mac

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

与docker-compose up minio1 minio2 ...无关...

docker-compose up

docker-compose.yml

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

docker-compose版本:

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:

4 个答案:

答案 0 :(得分:0)

解决方案

您必须执行以下4条命令:

docker-compose up minio1 
docker-compose up minio2 
docker-compose up minio3 
docker-compose up minio4

说明

无法执行docker-compose up minio1 minio2 minio3 minio4的原因是因为您正在执行:docker-compose up [serviceName] [entrypoint] [parameter1] [parameter2]... 也就是说,通过docker-compose,您只能执行在compose文件中定义的服务,并根据需要指定带有其参数的新入口点,而不能仅通过一个命令指定多个服务。

答案 1 :(得分:0)

尝试:

  

docker-compose up -d minio1 minio2 minio3 minio4

这对我有用

答案 2 :(得分:0)

在我当前的项目中,我实际上遇到了类似的挑战。这让我不禁想到编写一个我称为docker-compose-profile(或简称为dcp)的小脚本的想法。我昨天在docker-compose-profile上在GitLab上发布了此内容。简而言之:我现在可以使用类似dcp -p all-minio "up -d"的命令来启动几个预定义的docker-compose配置文件。配置文件可能包含docker.compose.yml中所有已定义服务的子集。使用这种机制,很容易启动在dcp.yml中单独定义的几组服务。定义一些启动步骤后,也有可能首先启动所有minio服务,而下一步将增加其他服务。 随时尝试一下,并提供一些反馈或建议以进一步改进。

因此涵盖了两个方案:a)仅启动您的minio东西b)首先启动minio服务,然后继续其他服务。

答案 3 :(得分:0)

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

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

<块引用>

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

docker-compose 1.28.0 开始,新的 service profiles 就是为此而生的!使用 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

您也可以考虑将您的服务拆分为 multiple docker-compose.yml files

# 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