FROM node:alpine
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY ./ ./
CMD [ "npm" , "run",'start']
docker build -f Dockerfile.dev ./
...
// 아래가 실행되면서 node_modules 생성
RUN npm install
// 그런데 COPY를 하면서 로컬의 node_modules을 한번더 가져옴
COPY ./ ./
...
docker run -it -p 3000:3000 이미지이름
docker run -it -p 3000:3000 -v /usr/src/app/node_modules -v $(pwd):/usr/src/app <이미지 아이디>
위 스크립트에서
-v /usr/src/app/node_modules
는 node_modules의 참조는 건너뛰라는 뜻이고
${pwd}:/usr/src/app
는 현재 경로에 있는 디렉토리를 /usr/src/app
경로에서 참조하라는 것
version: "3"
services:
react:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "3000:3000"
volumes:
- /usr/src/app/node_modules
- ./:/usr/src/app
stdin_open: true
docker-compose up
으로 실행
test도 관련 스크립트도 추가
tests:
build:
context: .
dockerfile: Dockerfile.dev
volumes:
- /usr/src/app/node_modules
- ./:/usr/src/app
command: ["npm","run","test"]
// 다음 FROM 전까지는 빌더 단계임
FROM node:alpine as builder
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY ./ ./
CMD ["npm", "run", "start"]
FROM nginx
COPY --from=builder /usr/src/app/build /usr/share/nginx/html
docker build .
docker run -p 8080:80 이미지 이름
** Nginx 기본 포트는 80임
run까지 해보면 8080포트에서 작동함을 확인할 수 있다