我有一个docker-compose.yml
,它包含了几个容器。其中三个用于我的应用程序(客户端、服务器和数据库),其余的用于各种开发工具(例如psql、npm、manage.py等)。当我使用docker-compose up
时,所有的容器都启动了,但我只希望启动三个主要的容器。由于我指定了链接,我可以用docker-compose up client
启动这三个容器,但是输出只来自一个容器,那么,有没有办法做到以下几点之一:
1.告诉docker-compose哪些容器应该由docker-compose up
启动
1.从docker-compose up client
获取所有链接容器的输出
9条答案
按热度按时间ui7jx7zq1#
可以使用以下命令启动容器:
这将在后台运行容器,输出可从
它将包含所有已启动的容器
eufgjt7s2#
启动在您的docker-compose文件中定义的特定服务。例如,如果您有一个docker-compose.yml
给定如下的合成文件:
有时您只想在启动整个套件之前启动mySQL(有时您只想填充数据库)。
ars1skjm3#
更新
从
docker-compose
1.28.0开始,新的service profiles就是为此而设计的!使用profiles
,您可以标记服务只在特定配置文件中启动:原始答案
从
docker-compose
v1.5开始,可以通过-f
标志传递多个docker-compose.yml
文件,这允许您将开发工具拆分为一个单独的docker-compose.yml
,然后您只需要包含它:有关这方面的深入讨论,请参见docker/compose#1896。
xqkwcwgp4#
噢,就这个:
rqcrx0a65#
一个好的解决方案是只运行所需的服务,如下所示:
和services.txt文件如下所示:
当然如果是依赖关系(dependency_on),需要一起运行相关的服务。
--build是可选的,只是举例。
nkkqxpd96#
实际上,在我目前的项目中,我也遇到了类似的挑战,这让我产生了写一个小脚本的想法,我称之为docker-compose-profile(简称:dcp)。我今天在GitLab上发布了这个代码docker-compose-profile。简而言之:我现在可以使用
dcp -p some-services "up -d"
这样的命令启动几个预定义的docker-compose配置文件,欢迎尝试,并给予一些反馈或建议以进一步改进。twh00eeo7#
您可以使用run命令并指定要运行的服务。请注意,run命令不会向主机公开端口。如果需要,您应该使用标志
--service-ports
来执行此操作。docker-compose run --service-ports client server database
sdnqo3pr8#
如果你有多个
compose
文件,你应该首先添加他们在记住每个服务后,从组成文件,你想了。看下面:knpiaxh19#
你通常不想这么做。使用Docker Compose,你可以定义服务,它们 * 组成 * 你的应用。
npm
和manage.py
只是管理命令。你不需要为它们提供容器。如果你需要,比如说使用manage.py
创建你的数据库表,你所要做的就是:把它当作Heroku使用的一次性dynos。
如果您确实需要将这些管理命令视为单独的容器(并且还需要对这些命令使用Docker Compose),则可以创建单独的
.yml
文件,并使用以下命令启动Docker Compose: