docker-compose를 사용하여 서버에서 env_file을 사용하여 프로덕션에 배포하려면 어떻게 해야 합니까?

docker-compose를 사용하여 서버에서 env_file을 사용하여 프로덕션에 배포하려면 어떻게 해야 합니까?

다음과 같은 간단한 예를 들어보세요.

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

config.env로컬 개발 설정은 로컬에 있고 프로덕션 config.env설정은 서버에 있습니다.

를 사용하면 서버의 로컬 config.env 대신 로컬 config.env가 사용됩니다. 나는 내 저장소 에 환경별 구성을 저장하고 싶지 않지만 Docker 문서에서 권장하는 방법에는 모두 .docker-compose -H [email protected] up --build -d.yml.envdocker-compose

제 질문은 어떻게 구성을 서버에 저장하고 docker-compose개발 컴퓨터에서 배포에 사용할 수 있느냐는 것입니다. 아니면 리포지토리를 서버에 업로드하고 docker-compose거기서 실행하여 원격 env 파일을 사용하는 것이 더 낫습니까 ?

답변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;

관련 정보