docker - 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
解决方案
您是否真的检查过是否创建了卷?运行docker-compose up minio1 minio2 minio3 minio4
将启动这些容器及其所有依赖项,例如depends_on
容器和卷,但只会输出命令中明确列出的容器的日志。
即实际上创建了卷,但这只是没有记录到您,因为您只附加到容器的日志!(并且卷是由docker-compose
容器本身而不是由容器本身创建的)。
我在真正的 docker-compose.yml 文件中有许多其他服务,我不想一直运行 docker-compose up 并启动每个服务。
从docker-compose
1.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
推荐阅读
- python - 如何告诉 Pandas read_table 一列有数值
- iframe - 什么决定了混合内容问题将被识别为错误还是警告?
- mapbox-android - Mapbox 导航关闭路线检测不起作用
- loops - 在 Haskell 中计算递归的次数
- reactjs - gatsbyjs - 我应该对图像使用 GraphQL 还是不使用?
- selenium - 如何在 RemoteDriver 中指定 Selenium 服务器的 ip 和端口?
- java - getTouchMajor() 不精确:我无法获得有关触摸区域长度的实际值
- c# - Buffer.BlockCopy Array 2d c++ 到 C# 共享内存
- asp.net - IIS中的普通文件夹和应用程序有什么区别?
- android - 多平台项目中的 Android 上下文