🤔 무엇을
웹앱을 거의 대부분 docker-compose.yaml
로 docker
환경으로 구성한다. 그런데 volume을 설정하고 구성할때 로컬 맥북에서는 이상없이 docker 내부에서 파일이 쓰여지면 매핑된 로컬 폴더에도 파일이 잘 쓰여진다!
그런데 synology nas에서 volume을 구성해서 작성하면 docker가 작성하는 유저, 그룹이 33:33
으로 고정되는 것이다 그래서 항상 웹앱 내부에서 권한이 없다는 오류가 나온다.
지금까지는 맵핑된 폴더의 권한을 33:33
으로 변경해서 해결했지만 이게 정확한 해결방법이 아니라는 것을 알아서 이 것을 어떻게 해결해야할지 찾아봐야 한다.
🔎 방법찾기
현재커널의 접속한 유저 또는 다른 id 보기
$ id
도커 컨테이너
$ docker-compose exec DOCKER_CONTAINER_ID id
https://kaspars.net/blog/docker-volume-permissions
위 포스트를보고 아 내가 생각했던 대로 구성하고있구나를 알게되었음
구체적으로 도커엔진이 어떤 uid:gid
를 구성하는지 알아야한다는 것을 깨달음
https://medium.com/@mccode/understanding-how-uid-and-gid-work-in-docker-containers-c37a01d01cf
위 포스트에서 도커가 어떤 매커니즘으로 uid:gid
를 구성해주는지 잘알게 되었다.
결국 워드프레스 도커이미지는 내부에 apache가 www-data:www-data
라는 기본 apache 설정을 가지고있다. www-data:www-data
는 내 리눅스 커널에서는 33:33
으로 표시되는 것이다.
🔑 해결
볼륨 매핑한 디렉토리의 기본 uid:gid
를 사용하려면 도커엔진이 만들어낸 컨테이너 내부의 커널의 권한을 바꿔주거나 매핑한 디렉토리의 권한을 바꿔주거나 해야한다.
apache config 파일을 매핑해서 설정하거나… 어떻게하는게 관리가 편할까?
소감
docker-compose, docker가 이러한 권한까지 매핑해서 관리해주는 방식이라면 얼마나 편할까? 잠깐 생각해본다.
참고
https://dev.to/acro5piano/specifying-user-and-group-in-docker-i2e # docker, docker-compose에서 권한 매핑