prosource

도커 컴포지트로 기존 이미지를 업데이트하는 방법은?

probook 2023. 11. 4. 10:52
반응형

도커 컴포지트로 기존 이미지를 업데이트하는 방법은?

저는 여러 개의 마이크로 서비스를 보유하고 있으며 개발 배포를 위해 도커 컴포지트를 사용하고 있습니다.마이크로 서비스 코드 베이스에 약간의 변경 사항이 있을 때, 나는 그것들을 다시 배치하기 위해 ci 작업을 시작하고 있습니다.이 작업을 하기 위해서 아래 대본이 있습니다.하지만 매번 처음부터 모든 이미지를 구축한 다음 실행해야 합니다.이 모든 수술이 끝난 후에, 저는anonymous이미지들.그래서 마지막 스크립트를 사용해서 제거하고 있습니다.이 프로세스를 보다 실용적으로 만드는 방법은 무엇입니까?기존 이미지를 새로운 변경 사항으로 제거하지 않고 업데이트할 수 있는 방법은 없습니까?

- docker-compose build
- docker-compose down
- docker-compose up -d --force-recreate
- docker rmi $(docker images -f "dangling=true" -q) -f

추가정보 : 사용중gitlab-ci

도커 컨테이너는 덧없음으로 설계되었습니다.기존 컨테이너를 업데이트하려면 기존 컨테이너를 제거하고 새 컨테이너를 시작합니다.따라서 귀하가 따르고 있는 프로세스가 올바른 프로세스입니다.

명령을 다음 명령으로 간단히 만들 수 있습니다.

docker-compose up --force-recreate --build -d
docker image prune -f

다음을 사용하여 업데이트할 수 있습니다.

docker-compose pull

이제 이미지가 업데이트되었습니다.이전 버전의 컨테이너를 실행 중인 경우 업데이트된 이미지를 사용하려면 컨테이너를 다시 시작해야 합니다.

docker-compose up --detach

upcommand는 이미지 또는 구성 변경 시 컨테이너를 자동으로 만듭니다.

새로운 이미지로 컨테이너를 업데이트하기 전에 모든 이미지가 다운로드되는지 확인하여 이미지 다운로드에 실패할 경우 중간 상태의 시간을 최소화하거나 더 심한 경우를 대비합니다.

  1. 최신 이미지를 꺼냅니다.

    docker-compose pull

  2. 그런 다음 용기를 다시 시작합니다.

    docker-compose up -d --remove-orphans

  3. 선택적으로 사용되지 않는 이미지를 제거합니다.

    docker image prune

docker-compose pull

그리고나서

docker-compose up -d

"down" 명령이 필요 없습니다. "composeer-dock up-d" 명령은 변경된 명령만

도커 컴포지트 버전 3을 사용하면 사용자의 논리에 따라 이미지에 태그를 추가하고 해당 태그를 정리할 수 있습니다.

build: ./dir
image: yourapp:tag

익명의 이미지를 피해서 치우는 데 도움이 될 수도 있습니다.

위와 같은 답변을 들었지만, 여전히 모든 것이 정확한지 확인하기 위해 다음 명령을 사용해야 합니다.

  1. docker-compose pull
  2. docker-compose down
  3. docker-compose up -d

한 번에 많은 도커 구성 스택을 업데이트할 수 있는 스크립트도 있습니다.

composite-update라고 하며 다음 링크에서 확인할 수 있습니다.

https://github.com/FrederikRogalski/compose-update

도커-compose-이미지-upd이터 구성-업데이트

이 파이썬 스크립트는 하나 이상의 도커 합성 스택의 이미지를 자동으로 업데이트합니다.

여러 개의 도커 합성 디렉토리가 제공되는 경우 스크립트는 병렬로 디렉토리를 업데이트합니다.

데모

output

사용.

Usage: compose-update [OPTIONS] [UPDATE_DIRS]...

  Update docker-compose images automatically.

  Takes one or more directorys as input and searches for a
  compose file in one of the following forms:
  "compose.yaml", "compose.yml", "docker-compose.yaml",
  "docker-compose.yml"

Options:
  --prune / --no-prune  Prune docker images after update
                        process if set
  --help                Show this message and exit.

설치

git clone https://github.com/FrederikRogalski/compose-update.git
cd compose-updater
chmod +x update-compose

그런 다음 경로에 'update-compose' 파일을 추가합니다.

언급URL : https://stackoverflow.com/questions/49316462/how-to-update-existing-images-with-docker-compose

반응형