我有一个船坞式作曲。Yml,其中包含几个容器。其中三个是我的应用程序(客户端,服务器和数据库),其余的是各种开发工具(如psql, npm,管理.py等)。当我做docker-compose up时,所有的都启动了,但我只想启动三个主要的。因为我已经指定的链接,我可以用docker-compose up客户端启动这三个,但输出只来自那一个容器。那么,有没有办法做到以下其中之一:

告诉docker-compose哪些容器应该由docker-compose up启动 从docker-compose up客户端获取所有链接容器的输出


当前回答

哦,就是这个:

$ docker-compose up client server database

其他回答

你可以使用以下命令启动容器:

$ docker-compose up -d client

这将在后台运行容器,输出将从

$ docker-compose logs

它由所有开始的容器组成

实际上,在我目前的项目中,我也遇到了非常类似的挑战。这让我想到了写一个小脚本,我称之为docker-compose-profile(或简称:dcp)。我今天在GitLab上以docker-compose-profile的形式发布了这篇文章。 简而言之:我现在可以使用dcp -p some-services "up -d"之类的命令启动几个预定义的docker-compose配置文件。请随意尝试,并为进一步的改进提供一些反馈或建议。

一个很好的解决方案是只运行所需的服务,就像这样:

docker-compose up --build $(<services.txt)

而services.txt文件是这样的:

services1 services2, etc

当然如果是依赖关系(depends_on),需要将相关服务一起运行。

——build是可选的,只是举个例子。

如果你有多个compose文件,你应该先把它们添加到你想要的compose文件中的每个服务中。请看下图:

docker-compose -f $(COMPOSE_FILES) -f $(ARM_64_COMPOSE_FILES) up -d app mysql_db_arm64

您可以使用run命令并指定要运行的服务。注意,run命令不会向主机公开端口。如果需要,您应该使用标记——service-ports来完成此操作。

Docker-compose run——service-ports客户端服务器数据库