我在下面有以下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:
答案 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