2022-08-11(목) TIL

황인호·2022년 8월 10일
0

TIL 모음

목록 보기
109/119

Nginx

Tips 왜 개발환경 서버와 운영환경 서버를 달리해야하는가?

[개발환경]
개발에서 사용하는 서버는 소스를 변경하면 자동으로 전체 앱을 다시 빌드해서
변경 소스를 반영해주는 것 같이 개발 환경에 특화된 기능들이 있기에
그러한 기능이 없는 Nginx 서버보다 더욱 적합합니다.

[운영환경]
그리고 운영환경에서는 소스를 변경할때 다시 반영해줄필요가 없으며
개발에 필요한 기능들이 필요하지 않기에 더 깔끔하고 빠른 Nginx를 웹 서버로 사용한다.

개발환경에서 필요한 이미지 생성 -> Dockerfile.dev

운영환경에서 필요한 이미지 생성 -> Dockerfile

개발환경 도커파일과 운영환경 도커파일 비교

🎉환경 Dockerfile.dev

FROM node:alpine

WORKDIR /usr/src/app

COPY package.json ./

RUN npm install

COPY . .

//react 일 경우
CMD ["node","run","start"]

//node일 경우
CMD ["node","app.js"]

🎊환경 Dockerfile

FROM node:alpine as builder
// 여기 FROM 부터 다음 FROM 전까지는 모두 builder stage라는 것을 명시
//builder stage 이곳의 목표는 빌드파일들을 생성하는것이다.
//그리고 생성된 파일과 폴더들은 /usr/src/app/build로 들어간다.

WORKDIR usr/src/app

COPY package.json .

RUN npm install

COPY . .

RUN npm run build

FROM nginx //nginx를 위한 베이스 이미지

COPY --from=builder /usr/src/app/build /usr/share/nginx/html
//run stage 이곳의 목표는 빌드파일들을 생성하는것
//생성된 파일과 폴더들은 /usr/src/app/build로 들어간다.

Nginx 도커 이미지를 이용한 Nginx 시작
즉, npm run build으로 생성한 빌드 파일을 Nginx 서버가 브라우저에서
보일수 있게 해준다.

운영 환경 도커파일 자세히 보기

2가지 단계로 이루어져있다.(Builder Stage)

1단계 빌드파일들을 생성한다.(Run Stage)

2단계 Nginx를 가동하고
첫번째 단계에서 생성된 빌드폴더의 파일들을 웹 브라우저의 요청에 따라 제공하여 준다.

Nginx는 80번 포트가 기본포트이다.

그렇기에 컨테이너안에 포트를 매핑해줄때 80번으로 매핑해주어야한다.

작성한 후에

docker build -t [이미지 이름] .
docker run -p 8080:80 [이미지 이름]

위에 명령어 입력해주면 nginx로 실행완료

profile
성장중인 백엔드 개발자!!

0개의 댓글