요약 : docker-sync No such process Check if your PIDFILE and process with such PID exists 오류 발생 해결에 대한 포스팅입니다.
회사에 새로 오신 부장님의 리딩 덕분에 도커를 쓰기 시작했다.
원래 40분정도 걸리던 빌드+와스 기동이 15분 정도로 줄어들다니.. 믿을 수가 없을 정도다. 대to the박!!!
서비스를 구성하는 여러 컨테이너들을 구동하는 과정 중 윈도우의 소스 파일을 웹 어플리케이션쪽 리눅스쪽 디렉토리로 실시간으로 카피하기 위해 docker-sync unison설정을 하여 사용하고 있는데 docker-sync 최초 실행 후에 윈도우쪽 파일변경을 인지하는데 너무 시간이 오래 걸리는 것이 유일한 단점이었다. (원래 그런지는 모르겠으나 docker-sync실행 후 약 10~15분정도가 지나야 그 이후부터 윈도우쪽 파일의 변경이 실시간으로 적용되는 것으로 보아 아마도 최초 파일/디렉토리 형상 체크에 시간이 걸리는 것 같다)
어쨋든 그 시간도 아깝다보니 출근시간에 맞춰 미리 실행을 시켜두려고 docker-sync구동 명령어를 .bashrc에 넣고 자동으로 실행하도록 시도하였다.
증상
그런데 직접 wsl ubuntu를 실행하여 bash쉘에서 명령어를 직접 입력하는 경우 docker-sync실행이 잘 되는데 윈도우CLI(커멘드라인)에서 wsl명령어를 통해 실행하면 다음과 같은 에러가 발생하는 것이었다.
C:\Users\devhinekr>wsl –distribution Ubuntu-20.04 (이용하려는 배포판이 wsl의 디폴트 설정이 되어 있으면 wsl만 타이핑해도 된다)
(이후 .bashrc파일안에서 docker-sync restart -c blabla/docker-sync.yml 실행)
ok Stopping sync container commerce-custom
error No such process
error Check if your PIDFILE and process with such PID exists
Fatal error: Lost connection with the server
Fatal error: Lost connection with the server
Terminated!
Fatal error: ill-formed root specification socket://127.0.0.1:
Terminated!
골때리는건 위와 같이 오류가 난 후 ctrl+C로 쉘로 빠져나온 후 동일한 명령어를 치면 정상적으로 실행이 된다.
읭?! 뭐지? 뭔가 데몬같은거라도 미리 떠야 하나? 이상해서 .bashrc에 docker-sync 커멘드를 실행하기 전에 sleep으로 딜레이도 줘보고 별짓을 다 했는데도 계속 실패에 실패.. ㅋㅋ
하도 이상해서 .bashrc에 docker-sync실행 직전 pwd로 현재디렉토리를 출력하게 해보니
/home/devhinekr 여야 할 디렉토리가 /c/Users/devhinekr가 아닌가!!!
웃기는건 ctrl+C후에다시 pwd 를 쳐보면 /home/devhinekr로 표시된다. 아.. 이래서 빠져나와서 docker-sync 실행시엔 또 정상적으로 실행이 됬구나.
결론 : 커멘드라인 wsl로 실행하는 경우 bash쉘 프롬프트가 뜨기 전까지는 현재 디렉토리 경로가 달랐던 것이었다. 정확히는 유저홈 디렉토리가 아니었던 것.
해결방법
어쨋든 원인을 알았기 때문에 docker-sync명령어 실행 전 cd ~/를 넣어서 리눅스쪽 유저홈으로 현재 디렉토리를 변경하도록 하여 실행에 성공하였다.
해결방법
안그래도 빠른 docker환경이 이제 더 빨라졌다.
누구보다 빠르게 난 남들보다 빠르게 ㅋㅋ 아웃사이더의 가사가 생각나는 날이다. 신난닷!!
P.S. 내용추가
잘 사용하던참에 이번에는 wsl 직접 실행 후에도 동일한 오류가 발생했다.
또한 docker-sync stop을 해도 동일한 오류가 계속 발생했다. docker-sync restart는 당연히 안되는 상태.
이것저것 삽질 해보다가 docker-sync실행 유저의 홈디렉의 .docker-sync아래의 daemon.pid파일을 지우면 정상기동된다는 것을 알게 되었다. .bashrc안에 rm ~/.docker-sync/daemon.pid를 추가하여 해결하였다. 추가로 발생한 오류도 있어 포스팅 하였다.