본문 바로가기

컨테이너/Docker

[도커 강의] (4). 도커파일 만들어보기

1. 도커파일이란?


 

지금까지는 단순히 공식 허브에 이미지를 다운받아서 컨테이너를 생성하고 그 안에서 각종 도구를 사용하고나 파일을 생성하는 과정을 진행했었습니다.

 

하지만, 이렇게 되면 매번 애플리케이션을 동작하는 환경을 구성하기 위해 패키지를 설치하고 환경설정하는 과정을 반복해야 합니다.

 

이런 문제를 간소화하기 위해서 Dockerfile이란게 존재합니다. Dockerfile은 컨테이너에 설치해야하는 패키지, 소스코드, 명령어, 환경변수설정 등을 기록한 하나의 파일입니다. 그리고 이를 빌드하면 자동으로 이미지가 생성됩니다. 이렇게 되면 앞으로는 애플리케이션 빌드 및 배포를 자동화할 수 있게됩니다.

 

기본적인 예제 부터 살펴보겠습니다.

# 1. 우분투 설치
FROM ubuntu:18.04

# 2. 메타데이터 표시
LABEL "purpose"="practice"

# 3. 업데이트 및 아파치 설치
RUN apt-get update
RUN apt-get install apache2 -y

# 4. 호스트에 있는 파일을 추가
ADD test.html /var/www/html

# 5. 작업공간 이동(=cd)
WORKDIR /var/www/html

# 6. 거기서 test2.html 파일생성
RUN ["/bin/bash", "-c", "echo hello > test2.html"]

# 7. 포트 80번 노출 지정
EXPOSE 80

# 8. 컨테이너 생성시 시작명령어
CMD apachectl -DFOREGROUND

 

 

 

2.  사용법?


$ mkdir docker

$ vim Dockerfile

$ echo test >> test.html

# 해당 디렉토리에 있는 Dockerfile을 찾아서 image tag를 koobuiold:0.0으로 해서 생성해라
$ docker build -t koobuild:0.0 ./

# 컨테이너를 외부로 노출시키는 방법
$ docker run -d -p 80:80 --name kooserver koobuild:0.0

 

아래와 같이 docker image를 노출시키면 Apache home 화면이 노출됩니다.

 

Dockerfile에서 이부분만 수정한다면 hello가 출력됩니다.

$ RUN ["/bin/bash", "-c", "echo hello > index.html"]

 

 

3. 파이썬 예제


https://github.com/themapisto/Django_MSA_project

 

GitHub - themapisto/Django_MSA_project

Contribute to themapisto/Django_MSA_project development by creating an account on GitHub.

github.com

 

따라해 봅시다. 

어플리케이션을 build 하는 방법을 docker을 사용하면 굉장히 간단합니다.

다음장에 나오는 docker-compose의 장점을 먼저 눈으로 보도록 하겠습니다.