2017-03-19 89 views
0

我有两个不同的Web项目使用它使用相同的一组docker图像来创建API响应。开发人员可以从GitHub中克隆这些Web项目中的任何一个,并运行npm脚本以在其本地开发机器上启动Web层。Docker撰写使用Docker运行删除容器开始

回购1 在这种回购Web层的构建脚本使用的脚本文件加速旋转容器应用层(说的容器名称是APP_CONTAINER)。应用层的端口为9090(例如),Web层在8080上运行。此存储库中的docker脚本检查任何正在运行的应用程序(API)容器,将其删除,从我们的内部Docker集线器中取出最新映像,然后再次启动这些容器。

回购2 在这种回购Web层的构建脚本使用泊坞窗撰写拉和最多的应用程序(API)的容器(名称相同APP_CONTAINER)。这些容器的端口需要是相同的9090端口。此回购的网络层运行在不同的端口,即端口3000.

我的问题是,当我在回购2中运行码头组件时,是否有办法删除容器APP_CONTAINER,如果它已被创建并运行通过第一次使用码头运行命令回购?

回答

0

如果容器名称总是相同的(或者你可以确定的东西),你可以在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)) 

如果你hav e在docker-compose up之前运行此命令,您可以创建您运行的脚本而不是手动启动容器。一些线上的:

#!/bin/bash 

APP_CONTAINER="APP_CONTAINER" 
docker stop $(docker ps -q -f name=$APP_CONTAINER) 
docker-compose up -d 
+0

这些是我通常采取的步骤,如果我要写一个脚本。当开发人员运行docker-compose时,我希望这些发生。我可以使用我的docker撰写yml配置吗? –

+0

我通常所做的是在为开发者运行所有必需操作的根目录中添加一个脚本(在某些情况下,您必须导入数据库或执行其他操作)。 在答案中更新,否则不可读。 – oirad