일단 난 윈도우 쓰는 사람이라 WSL2(우분투) 기준이야.
내가 도커를 아예 모르는 건 아닌데 이게 쓰다보면 항상 궁금한 게 있었거든?
나만 이런 궁금한건지 아니면 다른 개발자도 비슷한 생각이나 어려움을 겪는지 궁금해서.
외국사례 찾아봐도 비슷한 질문이나 답은 있는데 명쾌하지가 않더라고.
도커를 쓰는 주 이유는 같은 환경 셋팅이잖아. 최초에 누군가 프로젝트를 만들때는 자기 PC(WSL)에 PHP든 파이썬이든 깔려있다고 치자.
근데 난 이것도 "나는 내 호스트에 강박적으로 아무것도 깔고 싶지 않다"가 되야 진정 도커를 쓰는 의미라고 생각하거든.
내가 라라벨 프로젝트를 할 일이 생겨서 이참에 한 번 위의 상상대로 해보고 싶었어.
그래서 순수하게 WSL2와 도커만 셋팅한 상태로 라라벨 프로젝트를 하나 만들어 보기로 했는데... 뭐 생성은 되지.
도커 컴포즈로 생성하고 볼륨 맞추고 어쩌고 저쩌고 하면 컨테이너 정지시 휘발되는 특성때문에 이것도 스므스하게 된다고는 할 수 없지만 어쨌든 편법을 좀 써가면서 하면 되긴 하더라고.
(특히 node 때문에 애를 좀 많이 먹음)
근데 첫 문제가 명령어 실행때인데, 일단 내 호스트에는 PHP가 깔려있지 않으므로 컨테이너 내부에서 명령어를 실행해야 하는데 artisan 명령어를 수 없이 때려야 하는 라라벨 특성으로 보면 좀 불편하더라고.
그래도 이건 불편사항이니 넘어간다 하더라도.
두 번째 문제가 권한 차이가 발생함. 호스트 계정은 ubuntu 인데 컨테이너는 기본이 root라서 폴더 생성이나 파일 생성 시 권한 충돌이 일어나는데 도커 내부에서 계정 권한을 넣으라고는 하지만 명쾌하지는 않더라고.
세 번째가 VSC에서 작업 할 때 인데 호스트에 PHP가 깔려있지 않으니 디버그 체크가 되지 않아 컨테이너에 접속해서 작업을 해야 하는데 VSC 플러그인이 실행할 때마다 설치를 하더라고.
네 번째가 이 프로젝트를 공유할 때인데 그럼 공유받은 사람도 위의 세 가지 문제를 또 겪을 수 있다는 말인거 같거든.
혹시 이런 상황을 고민해봤거나 해결한 개발자 있으면 어떻게 풀어갔는지 알려주면 고맙겠어.
명령어실행은 도커 명령어로 할 수 있음 보면 걍 대부분 php특성 관련 문젠데 다른언어는 아예 빌드부터 다시하는데 볼륨기반으로 이미지는 그대로두고 업데이트를 하려고 하니깐 그런거고 나라면 간단히 결론만 내리면 php는 개발환경을 도커로 굴리기 적합하지 않다 정도로 정리할거같은데
이건 도커질문이 아닌 php 질문에 가깝고 공감도 이해도 할수있는 사람이 극소수임
권한이런거 때문에 그냥 어카운트 추가하다가 컨테이너 하나하나 빌더 역할처럼 만들어서 해결하긴 했는데, 결국 aws 넘어가고 유지비때문에 홈서버로 넘어감..
바인드마운트할때는 당연히 내부 파일들의 권한을 낮춰야되고 보안이슈가 싫으면 코드 수정할때마다 이미지 빌드하면 되지
누구 마음대로 도커같은 컨테이너 쓰는 기준이 호스트에 아무것도 깔고 싶지 않다임?
호스트에 아무것도 깔고싶지 않다면 가상머신을 쓰시오.
로컬 인프라같은거 깔끔하게 올리려고 docker compose 쓰는건 꽤 있는일인데 개발 환경 자체를 도커로 두는건 잘 없지