Nginx는 웹서버이며 , 전에 장고프로젝트를 할때 한번 Nginx를 써 본적이 있는데 그때는 reverse-proxy 및 https 적용을 위해 사용하였다. (정적파일 등을 제공해주기도 한다.)
FROM node:alpine as builder
WORKDIR /usr/src/app
COPY package.json ./
RUN npm install
COPY ./ ./
CMD ["npm", "run", "build"]
FROM nginx
COPY --from=builder /usr/src/app/build /usr/share/nginx/html
첫번째줄 FROM에 as builder는 여기 FROM부터 다음 FROM 전까지는 모두 builder stage라는 것을 명시
builder stage의 목표는 빌드파일을 생성하는것이며, /usr/src/app/build 해당경로에 빌드 파일이 생긴다.
FROM nginx 는 nginx라는 베이스이미지를 가져오는것이며
COPY --from=builder /usr/src/app/build /usr/share/nginx/html
--from 다른stage에 있는 파일을 복사할때 다른 Stage 이름을 명시
/usr/src/app/build 어떤파일들을 복사할껀지
/usr/share/nginx/html: 목적지, 어디에다가 복사를 할껀지
build를 하게 되면 /usr/src/app/build
이 경로에 build 파일이 생성되며 /usr/share/nginx/html
로 파일을 복사시켜준다. 이 디렉토리에 넣어줘야지 Nginx가 client에서 요청이 들어올때 알맞은 정적 파일을 제공 해줌.빌드를 한 후 run을 실행시켜 정상적으로 동작되는지 확인한다.
docker build -t wmc1415/docker_react ./
docker run -p 8080:80 wmc1415/docker
Ningx의 기본포트는 80번이다.