이전에 Docker
의 명령어와 기본 개념을 짧게 다룬 적이 있습니다. 오늘은 도커 파일에 대해서 정리해 보겠습니다.
Docker File
은 컨테이너에 설치해야하는 패키지, 소스코드, 명령어, 환경 변수를 기록한 파일입니다. 이 파일을 빌드하면 이미지가 생성되고 이를 통해 빌드와 배포를 자동화
할 수 있습니다.
도커 파일의 예시를 보여드리겠습니다.
#./Dockerfile
FROM python:3
#기반이 될 이미지
# 작업디렉토리(default)설정
WORKDIR /usr/src/app
## Install packages
#현재 패키지 설치 정보를 도커 이미지에 복사
COPY requirements.txt ./
#설치정보를 읽어 들여서 패키지를 설치
RUN pip install -r requirements.txt
## Copy all src files
#현재경로에 존재하는 모든 소스파일을 이미지에 복사
COPY . .
## Run the application on the port 8080
#8000번 포트를 외부에 개방하도록 설정
EXPOSE 8000
#CMD ["python", "./setup.py", "runserver", "--host=0.0.0.0", "-p 8080"]
#gunicorn을 사용해서 서버를 실행
CMD ["gunicorn", "--bind", "0.0.0.0:8000", "****.wsgi:application"]
Docker File
은 위와같은 형식으로 작성할 수 있으며 COPY
FROM
EXPOSE
RUN
등의 명령어가 앞에 붙어있는 것을 확인할 수 있습니다. 명령어들에는 어떤 것들이 있는지 보겠습니다.
FROM
FROM
명령어는 base
이미지를 지정하기 위해서 사용됩니다. 보통 파일에 최상단에 위치합니다.
FROM <이미지>:<태그>
WORKDIR
WORKDIR
명령어는 shell
의 cd
명령어와 비슷하게 작업 디렉토리를 변경해 줍니다.
WORKDIR <이동할 경로>
RUN
RUN
명령어는 shell
에서 커맨드를 실행하는 것과 유사하게 이미지 빌드 과정에서 필요한 명령어를 실행시킵니다. 보통 이미지 안에 특정 소프트웨어를 설치하기 위해 사용됩니다.
RUN <전체 커맨드>
ex) RUN npm install
EXPOSE
EXPOSE
명령어는 포트와 프로토콜을 지정하기 위해 사용되는 명령어로 포트번호
를 설정하고 TCP/UDP
중에 선택할 수 있습니다. TCP
가 디폴트기 때문에 설정하지 않으면 자동으로 TCP
가 적용됩니다.
EXPOSE <포트번호>/<TCP 혹은 UDP>
ex) EXPOSE 3000/tcp
COPY
COPY
는 호스트 컴퓨터에 있는 파일을 이미지의 파일 시스템으로 복사하기 위한 명령어입니다. 상대 경로와 절대 경로 모두 사용됩니다.
COPY <경로> <경로>
CMD
CMD
명령어는 컨테이너가 실행될 때 실행할 커맨드들을 사용합니다. 많은 경우 ENTRYPOINT
와 함께 사용합니다.
CMD <전체 커맨드>