簡體   English   中英

部署docker-compose容器

[英]Deploying docker-compose containers

我正在嘗試部署一個使用docker-compose構建的應用程序,但感覺我的方向完全錯誤。

  1. 我有一切在本地工作 - docker docker-compose up使用適當的網絡和主機來啟動我的應用程序。
  2. 我希望能夠在生產機器上運行相同的容器和網絡配置,只需使用不同的.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-registrylatest標記docker-compose build Web服務映像。

然后,這只是將圖像推送到存儲庫的情況。

docker push 'my-private-docker-registry:latest'

並且運行docker pull ,使用新圖像停止並重新創建正在運行的容器是安全的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM