헬스체크 & 자동 재시작 — 24/7 무중단 운영
📋 실습 안내
✏️ CODE EDITOR (JSX)
▶ 실행 버튼을 눌러 코드를 테스트하세요.
👁️ 내 미리보기
내 코드 실행 결과
🎯 완성 미리보기
목표
위 에디터 코드를 수정해서 이 결과물과 똑같이 만들어보세요!
💡 TODO 주석을 채워서 위 결과물처럼 동작하게 만들어보세요
🤖 AI 선생님에게 질문하기
이번 강의 전용
▼
선생님이 답변 중이에요...
⚠️ 학습 관련 질문만 답변합니다. 관련 없는 질문은 자동으로 학습으로 유도됩니다.
Q1. Docker restart policy 중 '수동으로 docker stop한 경우에는 Docker 데몬 재시작 후에도 자동 시작하지 않는' 정책은?
💡 unless-stopped는 always와 유사하게 동작하지만, 수동으로 docker stop으로 중지한 경우에는 Docker 데몬이 재시작되어도 컨테이너를 자동으로 시작하지 않습니다. 이것이 운영 환경에서 unless-stopped를 권장하는 이유입니다. 유지보수를 위해 의도적으로 중지한 컨테이너가 의도치 않게 재시작되는 것을 방지합니다.
Q2. HEALTHCHECK의 start_period 파라미터의 역할은?
💡 start_period는 컨테이너가 시작된 직후 일정 시간 동안 헬스체크 실패를 무시하는 유예 기간입니다. n8n의 경우 DB 마이그레이션이 완료되기까지 시간이 필요하므로 start_period를 120s 정도로 설정해야 합니다. 유예 기간 없이 바로 체크하면 정상 시작 중인데도 unhealthy로 판단될 수 있습니다.
Q3. depends_on에서 condition: service_healthy를 사용하는 이유는?
💡 service_started(기본값)는 컨테이너 프로세스가 시작되기만 해도 조건이 충족됩니다. 하지만 PostgreSQL은 프로세스가 시작된 후에도 초기화가 완료될 때까지 연결을 받지 않습니다. service_healthy를 사용하면 pg_isready 헬스체크가 통과된 후, 즉 실제로 연결 가능한 상태가 된 후에 n8n이 시작됩니다.
Q4. Docker 로그 크기 제한을 위한 올바른 설정은?
💡 docker-compose.yml에서 로그 크기를 제한하려면 logging 섹션에 driver와 options를 설정해야 합니다. max-size는 파일당 최대 크기, max-file은 보관할 최대 파일 수입니다. max-size: 10m, max-file: 3으로 설정하면 총 30MB의 로그가 유지되고 이후 로그는 순환됩니다.
Q5. 컨테이너의 헬스체크 실패 횟수와 현재 상태를 확인하는 올바른 명령어는?
💡 docker inspect 명령어에서 .State.Health 경로를 통해 헬스체크 상태(Status, FailingStreak, Log)를 확인할 수 있습니다. Status는 starting/healthy/unhealthy 중 하나이며, FailingStreak는 연속 실패 횟수, Log는 최근 헬스체크 실행 결과 목록입니다.
😅
아쉽네요!
점수: 0점 — 70점 이상이 되어야 통과합니다.