Random

[Docker] Image 생성후 container 실행하기

SeanK 2022. 2. 10. 23:49

 

이번 프로젝트에서는 Docker를 적극적으로 활용하고자 하는데 

 

역시 Dockerfile을 생성하는 것부터가 쉽지가 않다. 

 

Dockerfile 생성

 

필자의 경우 이것저것 시도해보다가 결국 인터넷에 나와있는 그대로 복붙을 해서 사용을 했다. 

 

FROM node:12-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --silent
COPY . .
CMD [ "npm", "start" ]
EXPOSE 4000

설명을 덧붙이자면

 

FROM은 사용하는 기본 이미지를 의미한다. 이번 프로젝트의 경우 서버를 nodeJS로 구축하기 때문에 node:12-apline 버전을 적어 넣었다. 

 

그리고  RUN은 앱을 실행하기전 실행해야 할 명령어를 적어놓는 부분이다. 위 코드를 보면 필요한 dependency를 npm install로 다운로드하는 것을 확인할 수 있다. 

 

그리고 CMD는 최종적으로 실행할 앱 실행 명령어다. 필자의 경우 앱 실행 명령어가 npm start이므로 위와같이 설정하였다. 

 

Expose는 컨테이너에서 어떤 포트를 열어놓을 것인가를 설정한다. 

 

 

.dockerignore 생성

gitignore파일과 같이 docker도 ignore 할 대상을 기록할 수 있다. 

 

필자의 경우 아직 별다른 파일이 없는 관계로 아래와 같이 설정했다. 

 

사용법은 gitignore와 동일하다.

 

node_modules

 

image 생성

자 이제 image를 만들어 보자. 

 

아래의 명령어를 실행하면 image가 만들어진다. 

 

sudo docker build . -t 이미지명

 

 

container 실행하기

여기서 조금 헤메었는데 아래와 같이 명령어를 실행하면 image를 읽어 들여 container를 실행한다. 

 

 sudo docker run -d -p 8000:8000 이미지명

여기서 -p는 publish를 의미하며 로컬환경이 컨테이너의 어떤 포트와 연결되는지를 설정한다. 

 

로컬 환경 포트 : 컨테이너 포트

 

이렇게 이해하면 된다. 

 

문제는 -d인데 dispatch의 뜻으로 백그라운드 실행을 의미한다. 따라서 -d로 컨테이너를 실행했다면 별도로 아래 명령어를 사용해 컨테이너를 종료시켜줘야 한다. 

 

sudo docker stop [OPTIONS] CONTAINER [CONTAINER...]

 

댓글수0