운영 이미지 태그는 패치 버전까지 고정한다
latest나 2-alpine 같은 움직이는 태그는 배포할 때마다 컨테이너를 예고 없이 다시 만들 수 있다.
앱만 배포했는데 리버스 프록시나 DB 컨테이너까지 다시 만들어지며 잠깐 끊긴다. 그 서비스의 설정은 하나도 바꾸지 않았다.
원인은 움직이는 이미지 태그다. latest, 2-alpine 같은 태그는 새 버전이 나오면 다른 이미지를 가리킨다. compose는 배포 때 이미지를 받아 다이제스트가 바뀌었으면 컨테이너를 다시 만든다. 내가 바꾼 것이 없어도 태그 쪽이 움직이면 재생성이 일어난다. 계속 떠 있어야 하는 프록시·DB에서 특히 위험하다.
운영 이미지는 패치 버전까지 고정하고, 업그레이드는 따로 된 변경으로 한다. 그래야 무엇이 언제 바뀌었는지 기록이 남고, 문제가 생기면 그 변경만 되돌릴 수 있다.
services:
proxy:
# 위험: 새 2.x가 나오면 다음 배포에서 말없이 바뀐다
# image: caddy:2-alpine
image: caddy:2.11.7
db:
image: postgres:17.2
더 엄격하게 하려면 다이제스트(image: caddy@sha256:…)로 고정한다. 같은 태그를 다시 밀어 올리는 일까지 막는다.