diff --git a/lps/Dockerfile.worker b/lps/Dockerfile.worker index be8a597..7d5c553 100644 --- a/lps/Dockerfile.worker +++ b/lps/Dockerfile.worker @@ -43,4 +43,9 @@ HEALTHCHECK --interval=30s --timeout=8s --start-period=120s --retries=3 \ # Xvfb(가상 디스플레이)를 백그라운드로 띄우고 python 을 exec 로 승계 실행. # → 헤드풀 Chromium 이 :99 에 뜨고, 워커 로그는 그대로 docker logs 로 나온다(xvfb-run 은 로그를 삼킴). -CMD ["bash", "-c", "Xvfb :99 -screen 0 1920x1080x24 -nolisten tcp >/dev/null 2>&1 & sleep 1; exec python worker_main.py"] +# +# stale lock 제거가 먼저다(2026-08-04): `docker compose start`(재시작)는 컨테이너 파일시스템을 +# 그대로 재사용하므로 지난 실행의 /tmp/.X99-lock·/tmp/.X11-unix/X99 가 남는다. Xvfb 는 이걸 +# '이미 켜진 디스플레이'로 보고 죽고 → DISPLAY 없이 headful Chrome 이 못 떠 **모든 크롤이 조용히 실패**한다 +# (증상: 워커는 살아있는데 launch_persistent_context 가 'Missing X server or $DISPLAY' 로 실패). +CMD ["bash", "-c", "rm -f /tmp/.X99-lock /tmp/.X11-unix/X99; Xvfb :99 -screen 0 1920x1080x24 -nolisten tcp >/dev/null 2>&1 & sleep 1; exec python worker_main.py"]