CI/CD 파이프라인 자동화를 위해 Docker Compose로 서비스를 올린 후, 특정 컨테이너가 'healthy' 상태가 될 때까지 대기하는 쉘 스크립트를 작성 중입니다.
코드:
#!/bin/bash
docker-compose up -d
until [ "$(docker inspect -f '{{.State.Health.Status}}' my_app_container)" == "healthy" ]; do
echo "Waiting for healthy status..."
sleep 2
done
echo "Container is healthy"
오류: *실제 `docker ps` 확인 시 상태는 `(healthy)`로 표시됨*
시도: `docker inspect`의 쿼리 문법을 `{{.State.Health.Status}}`에서 `{{.State.Status}}`로 변경해 보았으나 결과가 다름.
질문: `docker inspect` 결과값이 `healthy`임에도 불구하고 쉘 스크립트의 문자열 비교 연산에서 일치하지 않는 원인이 무엇입니까?
댓글7
-
빗방울
2026.10.31 06:22
-
빗방울
2026.10.31 07:09
ㄹㅇ 공백 하나 때문에 며칠 날린 적 있음ㅋㅋ
xargs 써서 공백 날려보라고 하세요
-
빗방울
2026.10.31 08:06
이거 혹시 컨테이너 이름이 정확하게 매칭 안 된 거 아님?
inspect 결과가 비어있어서 계속 루프 도는 것 같은데
변수로 잡아서 출력값 먼저 찍어보세요ㅋㅋ
-
빗방울
2026.10.31 10:36
맞음ㅋㅋ
그거 빈 값 나오면 그냥 무한루프 타서 답도 없는데
일단 echo로 값 찍어보는 게 제일 빠를 듯함ㅋㅋ
-
빗방울
2026.10.31 11:05
ㄹㅇ 그럴 수도 있겠네요ㅋㅋ compose면 이름 뒤에 숫자 붙거나 프로젝트명 붙어서 안 잡히는 경우 많음ㄷㄷ
-
빗방울
2026.10.31 09:17
혹시 쉘 종류가 zsh나 다른 거면 비교문 문법 타는 거 아님?
그냥 `grep`으로 'healthy' 포함되어 있는지 체크하는 게 속 편할 듯ㅋㅋ
한번 해보세요
-
빗방울
2026.10.31 09:55
ㄹㅇ grep이 젤 속 편함ㅋㅋ
그냥 문자열 포함 여부로 체크하는 게 정신건강에 이롭네요
한번 해보시길
모든 이야기1455
가벼운 안부부터 깊은 생각까지, 함께 나눠요.
혹시 출력값에 눈에 안 보이는 공백이나 개행 문자 섞여 있는 거 아님?
trim 한번 해서 비교해 보시는 게 좋을 듯함ㅋㅋ
전에도 이런 적 있었는데 빡치네요 진짜