TIL56 | EC2서버에 Docker설치 및 배포(CentOS, Node.js, Dockerfile)

2021. 12. 3. 17:26프로그래밍

반응형

시작하기 전...

  • 개발환경: ubuntu 18.04, node v14

  • 서버환경: centos7, node v16

CentOS는 처음 접해봐서 명령어도 익숙하지 않았는데 nodejs로 개발한 앱을 Docker로 배포해보고 싶었다. Docker도 Django로 개발한 앱을 연습삼아 배포해본 게 다였기 때문에 익숙하지 않아서 Dockerfile을 작성하는게 막막했었는데 그래도 구글링을 거쳐 EC2 서버에 배포를 완료했다. 다음번 시행착오를 줄이기 위해 기록한다.

이 글은 저의 주관적인 경험을 작성한 글이므로 잘못되거나 불필요한 내용이 포함되어 있을 수 있습니다. 😣️

 

1. Dockerfile 작성

#./Dockerfile

#기반이 될 이미지
FROM node:16.13.1

# 작업디렉토리(default)설정
WORKDIR /app 

# 현재 Dockerfile 있는 경로의 모든 파일을 /app 에 복사
ADD . /app

# npm install을 실행
RUN npm install

# 현재경로에 존재하는 모든 소스파일을 이미지에 복사
COPY . . 

# 3000번 포트를 외부에 개방하도록 설정
EXPOSE 3000

# 컨테이너에서 실행될 명령을 지정
CMD ["npm", "start"]

 

2. CentOS에 Docker 설치

  • yum 패키지 업데이트 및 yum-utils 설치
sudo yum update
sudo yum install yum-utils
  • yum-config-manger를 통해서 docker 저장소 설정
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • docker 설치
yum install docker-ce docker-ce-cli containerd.io
  • docker 패키지가 설치되면 docker 데몬을 시작하고 부팅시 docker 데몬이 자동으로 시작되도록 설정
sudo systemctl start docker
sudo systemctl enable docker
  • docker 서비스가 실행중인지 확인
sudo systemctl status docker

 

3. docker hub에서 이미지 가져오기

  • 이미지 가져오기
sudo docker pull '도커허브에 가입한 계정명'/'이미지명':'버전'
  • 실행
docker run --name '컨테이너 명' -d'데몬으로 실행하기 위한 옵션' -p '호스트 포트':'컨테이너 포트' '이미지명'

 

반응형