Como posso usar o docker-compose para implantar na produção usando um env_file no servidor?

Como posso usar o docker-compose para implantar na produção usando um env_file no servidor?

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.envlocalmente com minhas configurações de desenvolvimento local e config.envno 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.envdocker-compose

Então, minha pergunta é: como posso armazenar a configuração no meu servidor e usá-la docker-composena 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;

informação relacionada