Docker Compose使用docker run开始移除容器

我有两个不同的Web项目使用同一套Docker镜像来创buildAPI响应。 开发人员可以从GitHub中克隆这些Web项目中的任意一个,然后运行npm脚本在本地开发机器上启动Web层。

Repo 1在这个repo中,web层的构build脚本使用一个脚本文件为应用程序层旋转容器(比如容器名称是APP_CONTAINER)。 应用程序层的端口是9090(例如),Web层在8080上运行。该回购站中的docker脚本检查任何正在运行的应用程序(API)容器,将其删除,从我们的内部泊坞窗中取出最新的图像,然后再次启动这些容器。

Repo 2在这个repo中,web层的构build脚本使用docker compose来拉和拉应用程序(API)容器(与APP_CONTAINER同名)。 这些容器的端口需要是相同的9090端口。 这个回购networking层运行在不同的端口,即端口3000。

我的问题是,当我在Repo 2中运行docker compose时,是否有办法删除容器APP_CONTAINER,如果它已经被第一个repo使用docker run命令创build并运行的话?

如果容器名称总是相同的(或者你可以确定的东西),你可以在bash中使用这样的东西(或者把它集成到你调用脚本的任何地方)。

如果你只是想停止已经运行的容器:

docker stop $(docker ps -q -f name=APP_CONTAINER) 

如果您想停止并删除已经运行的容器

 docker rm $(docker stop $(docker ps -q -f name=APP_CONTAINER)) 

而如果你想删除现有的应用程序容器,即使没有运行,你可以使用:

 docker rm $(docker stop $(docker ps -qa -f name=APP_CONTAINER)) 

docker-compose up之前,你必须运行这个命令docker-compose up你可以创build一个脚本来运行,而不是手动启动容器。 一些事情的线上:

 #!/bin/bash APP_CONTAINER="APP_CONTAINER" docker stop $(docker ps -q -f name=$APP_CONTAINER) docker-compose up -d