2017-03-19 86 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