[英]Deploying docker-compose containers
我正在嘗試部署一個使用docker-compose構建的應用程序,但感覺我的方向完全錯誤。
docker-compose up
使用適當的網絡和主機來啟動我的應用程序。 .env
文件。 我當前的工作流程看起來像這樣:
docker save [web image] [db image] > containers.tar
zip deploy.zip containers.tar docker-compose.yml
rsync deploy.zip user@server
ssh user@server
unzip deploy.zip ./
docker load -i containers.tar
docker-compose up
此時,我希望能夠在他們到達docker-compose up
再次運行docker-compose up
,但是嘗試根據docker-compose.yml
文件重建容器。
我有一種明顯的感覺,我錯過了一些東西。 我應該通過我的完整應用程序發貨,然后在服務器上構建圖像嗎? 如果從注冊表中存儲/加載圖像,您將如何啟動組合容器?
問題是我在開發和生產中使用了相同的docker-compose.yml文件。
應用程序服務沒有指定存儲庫名稱或標記,因此當我在服務器上運行docker-compose up
,它只是嘗試在我的應用程序的源代碼目錄(服務器上不存在)中構建Dockerfile。
我最后通過向本地docker-compose.yml添加顯式圖像字段來解決問題。
version: '2'
services:
web:
image: 'my-private-docker-registry:latest'
build: ./app
然后為生產創建了另一個撰寫文件:
version: '2'
services:
web:
image: 'my-private-docker-registry:latest'
# no build field!
在本地運行docker-compose build
,使用存儲庫名稱my-private-docker-registry
和latest
標記docker-compose build
Web服務映像。
然后,這只是將圖像推送到存儲庫的情況。
docker push 'my-private-docker-registry:latest'
並且運行docker pull
,使用新圖像停止並重新創建正在運行的容器是安全的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.