programing

docker-compose.yml에서 서비스를 비활성화할 수 있는 방법이 있습니까?

goodsources 2023. 9. 8. 21:25
반응형

docker-compose.yml에서 서비스를 비활성화할 수 있는 방법이 있습니까?

나는 내가 서비스를 일시적으로 비활성화하고 싶은 상황에 처해 있다는 것을 알게 되었습니다.docker-compose파일.

물론 언급할 수는 있겠지만, 그냥 "라고 말할 수 있는 선택지는 없을까요?"enabled: false" ?

2021년 1월 현재 서비스를 우아하게 비활성화할 수 있는 방법이 있습니다.docker-compose.yml또는 다른 서비스가 아닌 일부 서비스를 선택적으로 실행할 수 있습니다.Docker Composes 1.28.0은 A에 대한 지원을 도입했습니다.profiles이제 우리는 다음과 같은 일을 할 수 있습니다.

version: "3.9"
services:
  base_image:
    ...
    profiles:
      - donotstart

문서의 예에서는 이 키를 사용하여 다음을 기반으로 함께 실행되는 컨테이너 그룹을 만드는 방법을 설명합니다.--profile명령 줄에 옵션이 있습니다.페이지를 확인해보세요: https://docs.docker.com/compose/profiles/

갱신하다

구성 V2 베타 5에서 프로파일 지원이 올바르게 작동합니다(docker compose). Composes V2 베타 6는 도커 데스크톱 3.5.2 출시 2021-07-08에 포함되었습니다.

당신은 그것을 할 수 있습니다.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"]

또는 해당 명령을 아무 것도 하지 않는 명령으로 바꾸기 위해 을 다시 정의할 수 있습니다./bin/true)

그러면 컨테이너가 즉시 빠져나가고 아무 조치도 취하지 않을 겁니다.


shadi는 다음 팁을 주석에 추가합니다.

서비스를 구축하지 않으려면 빌드 키를 다시 정의하여 다음을 가리킵니다.Dockerfile이는 다음과 같습니다.

FROM tianon/true 
ENTRYPOINT ["/true"]

5and0은 댓글에서 최상위 섹션(확장 필드와 같은)을 지적합니다.

훨씬 편리: 비활성화된 서비스를 최상위 섹션으로 이동x-disabled:대신에services:

가 있는 섹션x-접두사는 구문 분석되지만 확장 필드로 의도된 방식으로 사용되지 않으면 무시됩니다.

다음을 통해 서비스를 0개의 복제본으로 확장합니다.

deploy:
      replicas: 0

안타깝게도 문서에 나와 있듯이 이것은 도커 스웜에서만 작동합니다.

프로파일에 서비스 할당

services:
  dev_service:
    ...
    profiles: ["dev"] # only runs with dev profile

프로파일 사용

docker compose --profile dev up

ref: https://docs.docker.com/compose/profiles/

일시적으로 사용하지 않도록 설정할 서비스에 다음 추가 줄을 추가합니다.

command: echo "{put your service name here} disabled"

어쨌든 시작은 하지만 아무 것도 하지 않습니다.

Docker composition yaml 파일에 정의된 서비스를 비활성화할 수 있는 방법은 없습니다.VonC의 제안은 좋은 해결책입니다. 사용 가능한 옵션에 대해서는 도커 구성 설명서 아래를 참조하십시오. https://docs.docker.com/compose/compose-file/

알겠습니다.

docker-compose up $(yq -r '.services | keys | join(" ")' docker-compose.yml | sed 's/service-name//')

언급URL : https://stackoverflow.com/questions/37254881/is-there-any-way-to-disable-a-service-in-docker-compose-yml

반응형