Dockerfile로 이미지 생성하기
Dockerfile 작성하기
이미지를 만들기 위해
Dockerfile
이라는 파일에 도커의 자체 DSL(Domain-Specific Language)를 사용하여 이미지 생성 명령어를 기록할 수 있다.$ docker build
명령어를 사용하면 도커는 작성했던Dockerfile
을 읽어들여 이미지를 생성한다.
Flask 애플리케이션 이미지를 생성하는 Dockerfile
을 만들어보겠다. 먼저 flask로 애플리케이션 서버를 띄울 수 있도록 app.py
를 작성한다.
그리고 도커이미지를 생성하기 위해 Dockerfile
을 작성한다.
FROM : 새로운 이미지 빌드를 위한 기초이미지를 불러온다. 유효한 Dockerfile
은 FROM 명령어로 시작해야 한다.
LABEL : 생성될 이미지에 메타데이터를 추가한다. 위 파일에서는 도커파일 작성자를 정의했다.
WORKDIR : 컨테이너에 RUN
, CMD
, COPY
등과 같은 명령어를 실행할 디렉토리를 지정한다. 여러 개의 명령어로 디렉토리를 이동할 수 있다.
위 도커파일의 실행 결과 : /a/b/c
ENV <key> <value> : 환경변수를 정의한다. 이 명령어가 정의된 이후의 명령어들은 이 명령어에서 정의된 환경변수를 기반으로 동작한다.
COPY <src> <dest> : 호스트에 있는 <src> 파일 또는 디렉토리 컨테이너의 <dest> 에 복사한다.
EXPOSE <port> [<port/protocol>] : 컨테이너가 열어놓을 포트번호를 설정한다. 옵셔널하게 프로토콜도 지정 가능.
CMD <param1> <param2> : 실행가능한 명령어인 param1 과 argument 인 param2 를 넘겨서 컨테이너가 생될 때 돌아갈 커맨드를 정의한다. 하나의 도커파일에 1개의 CMD 명령어만 들어갈 수 있다.
더 많은 dockerfile instruction : https://docs.docker.com/engine/reference/builder/
Dockerfile로 이미지 생성하기
작성한 Dockerfile로 이미지를 생성하려면 Dockerfile이 있는 디렉토리로 이동해서 아래의 명령어를 실행한다.
위 명령어를 실행하면 dockerfile에 작성되어있던 명령어들이 하나씩 실행된 후 이미지가 생성된다. 로컬에 있는 이미지들을 조회하면 아래와 같이 나타난다.
이미지로 컨테이너 생성하기
위 명령어를 실행하면 컨테이너가 생성되고 0.0.0.0:8888
으로 플라스크에서 구동하는 웹 애플리케이션 서버에 접속할 수 있다. 소스코드가 변경되면 이미지를 다시 생성해야 한다.
Last updated