docker-compose.부팅 시 여러 Yml를 지정하여 차점을 무시합니다.

6508 단어 DockerTipstech

결론


시작할 때 여러 개의 docker-compose 파일을 지정하면 차분을 덮어쓰고 적용할 수 있는 메커니즘을 사용하면 환경에 따라 여러 파일을 이중 유지보수할 필요가 없습니다.
https://docs.docker.jp/compose/extends.html
docker-sync를 사용할 환경과 사용하지 않을 환경 두 가지를 준비할 경우docker-compose.yml는 docker-sync의 설정이 없고 docker-compose.with-docker-sync.yml와 같은 다른 파일에서는 docker-sync의 차이점만 정의하여 이중 유지보수를 피하고 서로 다른 환경을 준비할 수 있습니다.
docker-sync-with-docker-sync.yml
version: "3"
services:
  web:
    volumes:
      - web-native-osx-sync:/app:nocopy
volumes:
  web-native-osx-sync:
    external: true

docker-sync를 사용하지 않는 환경


$ docker-compose up

docker-sync를 사용하는 환경


$ docker-sync start
$ docker-compose -f docker-compose.yml -f docker-compose.with-docker-sync.yml up

딱한 사정


평소 Mac에서 Docker Desktop을 사용하여 개발하면 파일을 동기화하는 데 상당한 시간이 걸리기 때문에 docker-sync를 사용합니다.
그러나 팀에도 윈도 개발을 사용하는 구성원이 있다. 그들은 같은 시기의 지연에 고생하지 않고 안정성을 중시하기 때문에 docker sync를 사용하지 않았다.
지금까지 기본적으로 같은 구성의 두 개의 파일을 준비했고volumes의 부분만docker-sync에 사용했습니다.docker-compose.yml변경 시docker-compose.with-docker-sync.yml도 같은 변경 적용...매우 특별한 이중 유지보수로 변경 누락이 간혹 발생.

docker-sync를 사용하지 않는 구성원


참조
$ docker-compose up
docker-compose.yml 시작

docker-sync를 사용하는 구성원


$ docker-sync start
$ docker-compose -f docker-compose.with-docker-sync.yml up
docker-sync.yml의 설정에 따라 docker-compose.with-docker-sync.yml로 시작

해결책


나는 이중 유지보수를 하려고 하기 때문에 Docker Compose의 문서를 보고 시작할 때 여러 개의 파일을 지정하면 차이를 덮어쓸 수 있다는 것을 알게 되었다.
만약 서비스 정의가 두 파일에 존재한다면 Compose는 설정을 추가하고 덮어쓰는 규칙에 따라 설정을 통합합니다.
https://docs.docker.jp/compose/extends.html#id14
따라서 docker-compose.yml와 덮어쓰기를 정의하는 곳은 대체적으로 삭제하고,docker-sync를 사용할 때는 덮어쓰고 싶은 곳만 정의합니다.
docker-sync-with-docker-sync.yml
version: "3"
services:
  web:
    volumes:
      - web-native-osx-sync:/app:nocopy
volumes:
  web-native-osx-sync:
    external: true
그런 다음 두 파일을 읽어서 설정을 덮어쓸 수 있습니다.
이렇게 하면 이중 유지보수에서 해방된다.
$ docker-sync start
$ docker-compose -f docker-compose.yml -f docker-compose.with-docker-sync.yml up

보태다


참고로 docker-sync를 사용할 때docker-sync.yml의 옵션 중 아래에 사용된 파일 이름을 상대방에게 건네주면docker-sync-stack start 시작할 수 있어 매우 편리합니다.
docker-sync.yml
version: "2"

options:
  compose-file-path: ['docker-compose.yml', 'docker-compose.with-docker-sync.yml']  
syncs:
  web-native-osx-sync:
    src: './app'
$ docker-sync-stack start
This will first start the sync service like docker-sync start and then start your compose stack like docker-compose up.
You do not need to run docker-sync start beforehand!
This is very convenient so you only need one shell, one command to start working and CTRL-C to stop.
https://docker-sync.readthedocs.io/en/latest/getting-started/commands.html#start-1

좋은 웹페이지 즐겨찾기