Dockerfile
Dockerfile을 사용하면 도커 컨테이너 이미지를 생성할 수 있다. Dockerfile을 이용하여 이미지를 만들기 위해서는 'docker build' 명령어를 사용하면 된다. 예시 코드는 다음과 같다.
docker build -t my-server-image .
FROM: 베이스 이미지 설정
FROM 명령어를 사용하면 베이스 이미지를 설정할 수 있다. 다음과 같이 사용할 수 있다.
FROM [이미지명]
FROM [이미지명]:[태그명]
태그명을 지정해줄 수도 있고, 지정해주지 않을수도 있는데, 태그명을 지정해주지 않으면 자동으로 latest 태그명이 지정된다.
COPY: 파일 복사(이동)
COPY 명령어를 사용하면 호스트 컴퓨터에 있는 파일을 복사해서 컨테이너로 전달할 수 있다. 다음과 같이 사용할 수 있다.
# 문법
COPY [호스트 컴퓨터에 있는 복사할 파일의 경로] [컨테이너에서 파일이 위치할 경로]
# 예시
COPY app.txt /app.txt
ENTRYPOINT: 컨테이너가 시작할 때 실행되는 명령문 지정
ENTRYPOINT 명령어를 사용하면 컨테이너가 생성되고 실행될 때 처음에 수행되는 명령문을 지정할 수 있다. 다음과 같이 사용할 수 있다.
# 문법
ENTRYPOINT [명령문...]
# 예시
ENTRYPOINT ["node", "dist/main.js"]
RUN: 이미지를 생성하는 과정에서 사용할 명령문 지정
RUN 명령어는 이미지 생성 과정에서 명령어를 실행시켜야 할 때 사용한다. 다음과 같이 사용할 수 있다.
# 문법
RUN [명령문]
# 예시
RUN npm install
RUN 명령어와 ENTRYPOINT 명령어는 다르다. 둘 다 명령어를 실행시킨다는 공통점은 있지만, RUN은 이미지 생성 과정에서 명령어를 실행시킬 때 사용하고, ENTRYPOINT는 컨테이너를 생성한 직후에 명령어를 실행할 때 사용한다.
WORKDIR: 작업 디렉토리 지정
WORKDIR 명령어를 사용하면 작업 디렉토리를 지정해줄 수 있다. 이후에 등장하는 모든 명령들은 WORKDIR 명령어로 설정한 디렉터리를 기준으로 실행된다. 다음과 같이 사용할 수 있다.
# 문법
WORKDIR [작업 디렉토리로 사용할 절대 경로]
# 예시
WORKDIR /usr/src/app
EXPOSE: 컨테이너 내부에서 사용 중인 포트 문서화
EXPOSE 명령어의 목적은 문서화다. 사용한다고 해서 달라지는 건 없다. 단지 컨테이너 내부에서 어떤 포트에 프로그램이 실행되는지 문서화 할 수 있다. docker -p 옵션과 같은 역할을 하지 않는다. EXPOSE 명령어는 다음과 같이 사용할 수 있다.
# 문법
EXPOSE [포트 번호]
# 예시
EXPOSE 3000