도커파일을 작성한뒤 이미지 만들기

악음·2022년 3월 8일
0
post-thumbnail

도커파일로 이미지만들자

그런뒤 로컬의 package.json의 스크립트를 하나 추가하자

"start-eco-container": "npm i && npm run build && pm2 reload ecosystem.config.js --only deploytest --env production",

도커파일 정보

FROM node:alpine

# ENV PORT 3000
# ENV NODE_ENV production

WORKDIR /usr/src/app

COPY package*.json ./
RUN npm install && npm install pm2 -g
COPY ./ ./
RUN npm run build

# CMD ["npm", "run", "start-eco-container"]
CMD npm run start-eco-container && pm2 logs

위와같이 작성한뒤

docker build -t test .

테스트 이미지 생성

docker run --name testServer -it -d -p 80:8080 test      

localhost으로 접근

잘 접속된다

이제여기서 소스파일이 바뀌었다는 가정하에 다시 배포하는걸 진행시켜보자.

docker cp을 사용해서 로컬파일들을 컨테이너 안에 복사해보자(덮어쓰기로진행됨)

docker cp [localDirectory][container]:[container directory]

컨테이너 딜랙토리는 도커파일의 workdir으로 해야한다.

docker cp ./ testServer:/usr/src/app/.       

그런뒤 다음 커맨드를 입력하자

docker exec testServer npm run start-eco-container

무중단 배포가 완료된후 다음화면과 같이 바뀐다.

goTOAb1111out => goTOAbout 으로 바뀌었다.

로직을 설명하자면

  1. 도커를 실행시킬 환경에서 git clone 한뒤
  2. 도커이미지를 생성 후 도커 컨테이너를 실행
  3. 소스가 remote에서 변경됬다면 git pull 혹은 로컬에서 변경 됬다면
  4. 컨테이너로 변경된 소스를 cp 한다.
  5. 그런뒤 exec 커맨드로 컨테이너로 명령을 보냄 (서버 무중단 배포 커맨드)

이러한 과정을 거치면 소스가 변경되면 컨테이너 내에서 변경된 코드로 서버를 재시작할 수 있다.

완벽한 서버 관리 로직은 아니다

아직 젠킨스 ec2 같은 서비스를 이용하지 않았기때문..
다음 포스트에선 젠킨스로 한번 해보자

profile
RN/react.js개발자이며 배운것들을 제가 보기위해서 정리하기 때문에 비속어 오타가 있을수있습니다.

0개의 댓글