如何使用伺服器上的 env_file 使用 docker-compose 部署到生產環境?

如何使用伺服器上的 env_file 使用 docker-compose 部署到生產環境?

採取以下簡化範例:

services:
  app:
    image: alpine
    env_file: config.env
    entrypoint:
      - /bin/sh
      - -c
      - 'echo "Var is: $$MY_VAR"'

config.env在本地有本地開發設置,config.env在伺服器上有生產設置。

當我使用 時,它使用我本地的 config.env 而不是伺服器上的。我不想在我的存儲庫中存儲特定於環境的配置,但是 docker 文件中推薦的方法都涉及在您使用.docker-compose -H [email protected] up --build -d.yml.envdocker-compose

所以,我的問題是,如何在我的伺服器上儲存配置,並docker-compose在我的開發機器上使用進行部署?或者我最好將存儲庫上傳到伺服器並docker-compose在那裡運行,以便我可以使用遠端環境文件?

答案1

我最終創建了自己的部署腳本,將 docker-compose 檔案複製到伺服器並使用伺服器上的環境檔案:

scp docker-compose.yml $USER@$HOST:/tmp/
deploy_cmd="export \$(grep -v '#.*' \"$REMOTE_ENV_FILE\" | xargs)";
deploy_cmd="$deploy_cmd && docker stack deploy -c /tmp/docker-compose.yml my-project";
echo "Deploying to $USER@$HOST"
ssh -qA "$USER@$HOST" "$deploy_cmd" || return 1;

相關內容