[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//')


답변

기본이지만 #서비스의 각 줄 시작 부분에를 추가합니다 .