[Docker] 기본 지식

루나·2022년 5월 15일
0

이미지 : 실제 코드, 환경 설정들이 저장된 패키지
컨테이너 : 이미지 기반 실행 어플리케이션

docker run (실행할 이미지) 명령어

-p : 포트 지정 3000:80
-d : 백그라운드에서 실행
--name : 이름 지정
--rm : 컨테이너 종료시 삭제(익명 볼륨도 자동 삭제)
-it : i = 인터렉티브 t = 터미널
-v /app/data : 익명 볼륨 추가 (폴더 경로만 지정) Dockerfile에서 VOLUME ["/app/data"]도 가능
-v data:/app/data : 명명된 볼륨 추가 (data라는 이름의 볼륨, 경로)
-v /project/data:/app/data:ro : 바인드 마운트 :ro는 readonly (로컬 폴더 경로와 컨테이너 폴더 경로 동기화)
-e PORT=3000 : 환경 변수 직접 설정
--env-file ./.env : 경로에 있는 .env에서 읽어서 환경 변수 설정

node.js에서 node_modules 포함하는 법

docker run -d --rm -p 3000:80 --name temp-app -v "%cd%":/app:ro -v /app/node_modules temp-node

app의 하위 폴더인 node_modules을 바운드 마운트 뒤의 하위 볼륨으로 직접 명시하여 만들면 덮어씌워지지 않음

Windows WSL2에서 nodemon docker로 사용하기

Windows WSL2로 Docker를 사용하고 있다면 로컬 폴더에서 파일을 변경해도 수정 사항이 바로 도커 컨테이너로 전파되지 않는다. 내부 Linux 상에서 수정되도록 변경해줘야 된다.

임시로 빠르게 : package.json에서 "nodemon -L server.js" 로 실행하기
React : docker run -e CHOKIDAR_USEPOLLING=true react-image-id (환경변수)

VSCode에서 WSL로 사용하기 : https://code.visualstudio.com/docs/remote/wsl

docker cp (로컬폴더) (컨테이너이름:/폴더) : 로컬 -> 컨테이너로 복사 (반대도 가능)

profile
백엔드 개발자

0개의 댓글