我有一个船坞式作曲。Yml文件包含4个容器:redis, postgres, API和worker。
在工作容器的开发过程中,我经常需要重新启动它以应用更改。有没有什么好方法可以在不重启其他容器的情况下重启单个容器(例如worker) ?
我有一个船坞式作曲。Yml文件包含4个容器:redis, postgres, API和worker。
在工作容器的开发过程中,我经常需要重新启动它以应用更改。有没有什么好方法可以在不重启其他容器的情况下重启单个容器(例如worker) ?
当前回答
使用docker-compose文件重新启动服务
docker-compose -f [COMPOSE_FILE_NAME].yml restart [SERVICE_NAME]
用例#1:如果COMPOSE_FILE_NAME是docker-compose。Yml和服务是工人
docker-compose restart worker
用例#2:如果文件名是sample。Yml和服务是工人
docker-compose -f sample.yml restart worker
默认情况下,docker-compose查找docker-compose。如果我们运行docker-compose命令,那么我们可以用-f [FILE_NAME].yml标记指定文件名
其他回答
这很简单:使用命令:
docker-compose restart worker
您可以设置在杀死容器之前等待停止的时间(以秒为单位)
docker-compose restart -t 30 worker
注意,这将重新启动容器,但不会重新构建它。如果您想应用更改,然后重新启动,请查看其他答案。
使用docker-compose文件重新启动服务
docker-compose -f [COMPOSE_FILE_NAME].yml restart [SERVICE_NAME]
用例#1:如果COMPOSE_FILE_NAME是docker-compose。Yml和服务是工人
docker-compose restart worker
用例#2:如果文件名是sample。Yml和服务是工人
docker-compose -f sample.yml restart worker
默认情况下,docker-compose查找docker-compose。如果我们运行docker-compose命令,那么我们可以用-f [FILE_NAME].yml标记指定文件名
要在只重新启动单个服务的情况下对Docker Compose文件应用更改,可以使用Docker - Compose命令和up命令并指定服务名称。例如:
$ docker-compose up -d --no-deps myservice
这个命令将更新myservice服务的配置并重新启动它,而不会影响撰写文件中的任何其他服务。-d标志在后台运行服务,——no-deps标志告诉Compose不要启动myservice服务的任何依赖项。
您也可以使用restart命令重新启动单个服务:
$ docker-compose restart myservice
这将应用myservice服务的最新配置并重新启动它。
注意,该命令不会对Compose文件本身应用任何更改,它只会使用当前配置重新启动服务。
简单的“docker”命令对“worker”容器一无所知。 使用这样的命令
Docker-compose -f Docker-compose。Yml重启工作
下面的命令
docker-compose restart worker
将只是停止和启动容器。也就是说,无需从docker-compose.xml中加载任何更改
STOP类似于PC中的休眠。因此,停止/启动将不会查找配置文件中的任何更改。为了从容器的recipe (docker-compose.xml)中重新加载,我们需要删除并创建容器(类似于重新启动PC)
命令如下所示
docker-compose stop worker // go to hibernate
docker-compose rm worker // shutdown the PC
docker-compose create worker // create the container from image and put it in hibernate
docker-compose start worker //bring container to life from hibernation