docker-compose : docker-compose.yml에서 실행 한 후 컨테이너를 자동으로 제거하는 옵션


24

docker-compose run참조 가 가지고 상태 --rm로 옵션을

실행 후 용기를 제거하십시오.

run에서 지정한 일부 서비스 의 기본 동작 으로 설정하고 싶습니다 docker-compose.yml.

따라서 질문은 다음 같습니다.

  1. 어떻게 든 지정할 수 있습니까 docker-compose.yml?
  2. 가능하다면 어떻게해야합니까?

( INB4 "Bash aliases, Luke!" : 물론 docker-compose.ymlbash 별칭을 설정 하여 외부에서이를 강제 할 수 는 alias docker-compose-run='docker-compose run --rm'있지만 외부가 docker-compose.yml아닌을 통해 정확하게 적용하는 방법에 관심이 있습니다 .)

답변:


10

TLDR : 여전히 불가능합니다 2018-11 ; 사용 docker-compose down또는docker-compose run --rm

이 질문은 거의 3 년 후이므로이 질문에 대한 답변을 업데이트하고 싶습니다. 이렇게하면 다른 사람이 검색 할 수 있습니다.

나는 같은 질문을했고 여기에 내가 찾은 해결 방법이 있습니다 (질문 자체의 것을 포함하여).

docker-compose down

다음을 수행합니다.

컨테이너를 중지하고 up으로 만든 컨테이너, 네트워크, 볼륨 및 이미지를 제거합니다.

기본적으로 제거 된 것은 다음과 같습니다.

- Containers for services defined in the Compose file
- Networks defined in the networks section of the Compose file
- The default network, if one is used

외부로 정의 된 네트워크 및 볼륨은 제거되지 않습니다.

그것을 선언 할 수는 없지만 docker-compose.yml번거 로움을 덜어 줄 것입니다. 특히 볼륨과 네트워크에서.

docker-compose run --rm

--rm-실행 후 컨테이너를 제거합니다. 분리 모드에서는 무시됩니다.

서비스에 대해 일회성 명령을 실행합니다. 예를 들어 다음 명령은 웹 서비스를 시작하고 bash를 해당 명령으로 실행합니다.

docker-compose run web bash

[...] run에 의해 전달 된 명령은 서비스 구성에 정의 된 명령보다 우선합니다 .

[...] 명령 서비스 구성에 지정된 포트를 작성하지 않습니다 . 이것은 이미 열린 포트와 포트 충돌을 방지합니다. 서비스 포트를 작성 하여 호스트에 맵핑하려면 --service-ports 플래그를 지정하십시오.

docker-compose rm -f

-f, --force 제거 확인을 요구하지 않습니다


8

Dockerfile또는 docker-compose.yml사양의 일부가 아니며 run 명령의 cli 옵션 일 뿐이므로 대답은 no입니다. 시행을 위해서는 외부에 의존해야합니다.

프로젝트를위한 빌드 도구를 가지고 있다면 일반적으로 docker-compose 작업을 래핑하는 것이 가장 좋습니다. 예를 들어 gradle 프로젝트는 --rm실행 작업 과 같은 일부 기본 옵션을 설정하는 도커 관련 작업을 제공 합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.