採取以下簡化範例:
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
.env
docker-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;