[docker] docker-compose.yml에서 서비스를 비활성화하는 방법이 있습니까?
docker-compose
파일 에서 서비스를 일시적으로 비활성화하고 싶은 상황에 처해 있습니다.
물론 주석을 달 수는 있지만 ” enabled: false
” 라고 말할 수있는 옵션이 있습니까?
답변
entrypoint
또는command
명령을 아무 작업도 수행하지 않는 것으로 대체하기 위해 또는를 재정의 할 수 있습니다 ( /bin/true
)
그러면 컨테이너가 즉시 종료되고 아무 작업도 수행되지 않습니다.
shadi 는 주석에 다음 팁을 추가합니다.
서비스를 전혀 빌드하지 않으려면 다음
Dockerfile
만 있는을 가리 키도록 빌드 키를 재정의하십시오 .
FROM tianon/true
ENTRYPOINT ["/true"]
5andr0 은 주석 에서 최상위 섹션x-disabled:
(확장 필드 유사)을 지적합니다 .
훨씬 더 편리 : 비활성화 된 서비스를
x-disabled:
대신 최상위 섹션 으로 이동services:
x-
접두사가있는 섹션 은 구문 분석되지만 확장 필드로 의도 한 방식으로 사용되지 않으면 무시됩니다.
답변
docker-compose.override.yaml
파일 에서 할 수 있습니다 .
이 파일은 자동으로 읽고 docker-compose
기본 docker-compose.yaml
.
Git에서 제외 된 경우 각 개발자는 원본을 변경하지 않고 구성 (몇 가지 제한 사항)을 조정할 수 있습니다 docker-compose.yaml
.
따라서 다음에서 foo
진입 점을 재정 의하여 서비스 를 임시로 비활성화 할 수 있습니다 docker-compose.override.yaml
.
version: "3"
services:
foo:
entrypoint: ["echo", "Service foo disabled"]
답변
일시적으로 비활성화하려는 서비스에 다음과 같은 추가 줄을 추가합니다.
command: echo "{put your service name here} disabled"
어쨌든 시작하지만 아무것도하지 않습니다.
답변
Docker compose yaml 파일에 정의 된 서비스를 비활성화하는 방법은 없습니다. VonC의 제안은 좋은 해결 방법입니다. 사용 가능한 옵션에 대해서는 docker compose documentation 아래를 참조하십시오
https://docs.docker.com/compose/compose-file/
답변
다음을 사용하여 서비스를 0 개의 복제본으로 확장합니다. deploy : replicas : 0
불행히도 문서에 따르면 이것은 docker swarm에서만 작동합니다.
답변
나는 그것을 얻었다 :
docker-compose up $(yq -r '.services | keys | join(" ")' docker-compose.yml | sed 's/service-name//')
답변
기본이지만 #
서비스의 각 줄 시작 부분에를 추가합니다 .