Full App Lifecycle With Compose

<aside> 💡 Single set of Compose files for: Local docker-compose up development environment Remote docker-compose up CI environment Remote docker stack deploy production environmnet

</aside>

  1. local

    default docker-compose.yml

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/ed0614e6-7c2f-4faf-b367-79e7922b6330/_2020-12-21__6.10.52.png

    docker-compose.override.yml

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/357ca2db-7fd8-4245-a464-2e1b10cb0a84/_2020-12-21__6.10.42.png

    로컬 환경에서 docker-compose up을 하면 docker-compose.yml이 실행되고 그걸 바탕으로 docker-compose.override.yml 이 실행된다.

  2. docker-compose.test.yml

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/df7c60a4-434f-4c05-a764-490d3d19c106/_2020-12-21__6.28.50.png

    CI 에서 build 테스트를 위한 yml 파일 예시이다.

    단순 테스트 용도이기 때문에 drupal의 volume은 세팅해주지 않고 있고,

    postgres는 연결 확인만 해주면 되기 때문에 로컬 psql로 volume 마운트 해준다.

  3. docker-compose.pro.yml

    https://s3-us-west-2.amazonaws.com/secure.notion-static.com/f802a185-b83d-4313-93c4-73034752ecb7/_2020-12-21__6.34.34.png

일반 Local 환경:

docker-compose up → docker-compose.yml과 docker-compose.orreride.yml 이 올라간다.

CI (test) :

docker-compose -f docker-compose.yml -f docker-compose.test.yml up -d

→ -f 실행 순서는 항상 기본이되는 yml 파일 순으로 선언해야 한다.

CI (production):

docker-compose -d docker-compose.yml -f docker-compose.prod.yml config > output.yml

→ config 옵션을 사용하면 두 compose를 output.yml 이라는 하나의 compose 환경으로 통합해준다.

Service Updates: Changing Things In Fight