docker-组合 vs docker-组合 service1 service2
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 个服务并创建 volumes/networks?
这不会出现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
docker-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-撰写版本:
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
解决方案
您必须执行这 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 文件中定义的服务,如果需要,可以使用其参数指定新的入口点,但不能仅在一个命令中指定多个服务。
尝试:
docker-compose up -d minio1 minio2 minio3 minio4
这对我有用
实际上,我在当前的项目中遇到了类似的挑战。这让我想到了编写一个我称之为 docker-compose-profile
(或简称:dcp
)的小脚本的想法。我昨天在 GitLab 上以 docker-compose-profile 的形式发布了这篇文章。简而言之:我现在可以使用像 dcp -p all-minio "up -d"
这样的命令启动几个预定义的 docker-compose 配置文件。配置文件可能包含您 docker.compose.yml
中所有已定义服务的子集。使用这种机制,可以很容易地启动在 dcp.yml
中单独定义的几组服务。定义启动的一些步骤,也可以首先启动所有 minio 服务,下一步将启动其他服务。
欢迎试用并提供一些反馈或建议以进一步改进。
所以可以涵盖两种情况:a) 仅启动您的 minio 东西 b) 首先启动 minio 服务并继续其他服务。
你真的检查过是否创建了卷吗? 运行 docker-compose up minio1 minio2 minio3 minio4
将启动这些容器及其所有依赖项,例如 depends_on
容器和卷,但只会输出命令中明确列出的容器的日志。
即卷实际上是创建的,但这只是没有记录给你,因为你只附加到容器的日志! (卷是由 docker-compose
而不是容器本身创建的)。
I have many other services in the real docker-compose.yml file, I don't want to run docker-compose up and start every service all the time.
以 docker-compose
1.28.0 the new 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
我有下面的 docker-compose 文件。如果我 运行 docker-compose up
一切正常。但是,如果我这样做 docker-compose up minio1 minio2 minio3 minio4
,则不会创建卷,并且我看不到以下日志。它不会创建我假设的卷。我在真正的 docker-compose.yml 文件中还有许多其他服务,我不想 运行 docker-compose up
并一直启动每个服务。我如何只启动这 4 个服务并创建 volumes/networks?
这不会出现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
docker-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-撰写版本:
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
解决方案
您必须执行这 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 文件中定义的服务,如果需要,可以使用其参数指定新的入口点,但不能仅在一个命令中指定多个服务。
尝试:
docker-compose up -d minio1 minio2 minio3 minio4
这对我有用
实际上,我在当前的项目中遇到了类似的挑战。这让我想到了编写一个我称之为 docker-compose-profile
(或简称:dcp
)的小脚本的想法。我昨天在 GitLab 上以 docker-compose-profile 的形式发布了这篇文章。简而言之:我现在可以使用像 dcp -p all-minio "up -d"
这样的命令启动几个预定义的 docker-compose 配置文件。配置文件可能包含您 docker.compose.yml
中所有已定义服务的子集。使用这种机制,可以很容易地启动在 dcp.yml
中单独定义的几组服务。定义启动的一些步骤,也可以首先启动所有 minio 服务,下一步将启动其他服务。
欢迎试用并提供一些反馈或建议以进一步改进。
所以可以涵盖两种情况:a) 仅启动您的 minio 东西 b) 首先启动 minio 服务并继续其他服务。
你真的检查过是否创建了卷吗? 运行 docker-compose up minio1 minio2 minio3 minio4
将启动这些容器及其所有依赖项,例如 depends_on
容器和卷,但只会输出命令中明确列出的容器的日志。
即卷实际上是创建的,但这只是没有记录给你,因为你只附加到容器的日志! (卷是由 docker-compose
而不是容器本身创建的)。
I have many other services in the real docker-compose.yml file, I don't want to run docker-compose up and start every service all the time.
以 docker-compose
1.28.0 the new 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