docker-compose up/down 一个容器

Inq*_*Shm 63 docker

我一直无法找到一种方法来在 docker-compose.yml 文件中只启动/关闭一个容器。我可以在不正常的情况下启动和停止单个容器,但我无法在两次重启之间更改容器配置(环境变量、挂载点等)

我在这里缺少什么?在这种情况下,最佳做法是什么?

Jor*_*ris 84

我发现这与 docker-compose down 对单个服务具有相同的影响:

docker-compose rm -s -v yourService

docker-compose rm

用法:rm [选项] [服务...]

选项:
-s、--stop 如果需要,在删除之前停止容器
-v 删除附加到容器的任何匿名卷

您可以将所有标志压缩为一个-参数:docker-compose rm -sv yourService

  • 这应该是答案。docker-compose down 只做全部或不做任何事情...这指向服务并停止它。 (7认同)
  • 你能解释一下这些标志,它们会做什么吗? (3认同)

gab*_*836 41

我建议你在 stackoverflow.com 上查看这个优秀的线程。这里重建单个容器并重新启动它的快速答案是:

docker-compose up -d --build worker
Run Code Online (Sandbox Code Playgroud)

例如,如果您的更改涉及 Dockerfile 而不仅仅是 docker-compose.ymll,这将是理想的解决方案


use*_*669 9

您可以使用

$ docker-compose -f docker-compose.yml up yourService
Run Code Online (Sandbox Code Playgroud)

仅启动 yourService 及其所需的所有依赖项。

因此,如果 yourService 依赖于 mysql 容器,则上述命令将启动两个容器。


小智 7

其他人已经展示了如何一起启动/启动容器,但是这是您可以单独重新启动和停止它们的方法。

重启容器

# restart immediately
docker-compose restart <container_name>

# restart after a 10s delay
docker-compose restart -t 10 <container_name> 
Run Code Online (Sandbox Code Playgroud)

停止容器

# stop immediately  
docker-compose stop <container_name>

# stop after a 10s delay  
docker-compose stop -t 10 <container_name>
Run Code Online (Sandbox Code Playgroud)

对于那些想要在不停机的情况下进行更改的人,您可以使用以下命令构建一个新映像并进行更改,而无需任何停止/启动,但它将在 docker-compose.yml 文件中构建所有 Dockerfile

docker-compose up -d --build
Run Code Online (Sandbox Code Playgroud)


ica*_*ito 5

我最近有这个需求,并通过使用一个单独的docker-compose-production.yml文件来处理调整来解决它。然后记得启动docker-compose -f docker-compose-production.yml...

  • 您在哪里指定要上/下的容器? `-f` 是撰写文件的选择器,而不是容器。 (9认同)
  • 您可以执行“docker-compose -f docker-compose-product.yml down” (2认同)