Veja o seguinte exemplo simplificado:
services:
app:
image: alpine
env_file: config.env
entrypoint:
- /bin/sh
- -c
- 'echo "Var is: $$MY_VAR"'
Eu tenho config.env
localmente com minhas configurações de desenvolvimento local e config.env
no servidor com configurações de produção.
Quando eu uso , ele usa meu config.env local em vez daquele no servidor. Prefiro não armazenar configurações específicas do ambiente em meu repositório, no entanto, todos os métodos recomendados na documentação do docker envolvem a criação de arquivos separados ou arquivos na mesma máquina em que você está usando o .docker-compose -H [email protected] up --build -d
.yml
.env
docker-compose
Então, minha pergunta é: como posso armazenar a configuração no meu servidor e usá-la docker-compose
na minha máquina de desenvolvimento para implantar? Ou é melhor apenas enviar o repositório para o servidor e executá docker-compose
-lo para poder usar o arquivo env remoto?
Responder1
Acabei criando meu próprio script de implantação que copia os arquivos docker-compose para o servidor e usa um arquivo de ambiente no servidor:
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;