시놀로지 내부 Docker에서 바인딩한 호스트 파일 수정 사항이 왜 반영이 안될까요?
안녕하세요!
시놀로지에서 Caddy로 역방향프록시 서버 구성해보고 있습니다.
docker-compose로 컨테이너를 띄웠고 yml 파일에
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
로 작성해두고 Caddyfile도 작성했습니다.
컨테이너가 띄워지면 호스트에 있는 내용대로 잘 적용되는데요.
호스트에서 vim으로 Caddyfile 수정 후 저장하면 컨테이너의 /etc/caddy/Caddyfile 내용도 똑같이 변경되어야 하는거 아닌가요? ㅠ
컨테이너 접속해서 해당 파일 열어보면 컨테이너가 띄워질 당시 내용으로 되어 있습니다.
시놀로지 관련해서 권한 문제가 있는건지... 왜 안될까요?
Caddyfile 수정해서 caddy reload로 재적용하고 싶은데, 파일 내용이 안바껴서 docker restart로 하고 있습니다.
시놀로지 컨테이너매니저로 확인해도 해당 볼륨 바인딩 잘되어있고 :rw로 적용되어 있습니다. 엉엉 ㅠ
좋은답변을 받기위해서는 좋은 질문이 필요합니다.
유의할점⚠️
- 예의를 지켜주세요. 답변자는 답변을 할 의무는 없습니다.
- 질문에 대한 대부분의 답은 검색으로 찾아보실 수 있습니다.
- 답변자가 답변을 하면서 대개 많은 경우는 다시 질문을 하는 경우가 많이 있습니다.
- (질문의 대한 정보가 부족합니다. ~일 경우 결과물이 어떻게 됩니까? 등등)
질문방법🙏
자신의 상황을 최대한 자세히 설명해주세요.
상황이 정확하고 많을 수록 답변의 정확도가 올라갑니다.
ex) 헤놀로지라면 어떠한 로더의 이미지를 사용했는지.(arpl-i18n, mshell), 어떤 버전을 사용했는지 문제가있다면 어떠한것인지 스크린샷을 동반하고 에러의 경우 에러로그를 출력해서 주시면 좋습니다.
*가능하면 최신버전 OS/SW를 이용해주세요
답변에대한 피드백을 주세요.
정보가 질문에 모두 담겨있지않다면 대부분의 답변이 다른정보를 요구합니다.
이러한 답변에 대해 명확한 피드백을 주시면 도움이 됩니다.
reload 완료되어도 실제 서버 응답 변화가 없어서 컨테이너 내부 파일을 확인해보니 내용 반영 자체가 안되어있습니다ㅠ
미흡한 제 지식 선에선 도커의 볼륨바인드의 기본 동작이 호스트-내부 파일이 동작 중에도 수정사항이 양방향으로 적용되는걸로 알고 있습니다만... 도린이입니다..ㅠ
docker exec -w /etc/caddy caddy-root caddy reload (무중단 재로딩) 역방향프록시 추가등.
포트번호같은수정은 도커에서 재시작해줘야함.
docker exec caddy-root caddy fmt --overwrite --diff /etc/caddy/Caddyfile
포맷방식 정렬 (log 주의문구뜰때)
테스트 단계로 우선 특정 도메인에 respond "Hello"로 작성하여 컨테이너 띄워서, 정상적으로 Hello 응답 오는거 확인했습니다.
근데 이 상태에서 respond "Hi"로 호스트에 있는 Caddyfile을 수정하고 reload해도 Hello로 응답오길래,
컨테이너 파일시스템의 Caddyfile을 보니 여전히 "Hello" 입니다.
https://medium.com/@jonsbun/why-need-to-be-careful-when-mounting-single-files-into-a-docker-container-4f929340834
단일 파일 바인딩은 에디터에 따라서 동기화가 안 될 수 있다고 합니다.
디렉토리 바인딩으로 변경하니 재시작 없이 reload로 다 동작하네요!
감사합니다.
cmt alert