Dockerfile


1. Dockerfile?

DockerfileImage 설정 파일로 Image를 생성할 내용을 작성한다.

2. Options

OptionDescription

FROM

어떤 이미지를 기반으로 생성할지 설정한다. <이미지 이름>:<태그> 형식으로 설정한다.

MAINTAINER

메인테이너 정보를 작성한다.

ENV

이미지의 환경변수를 설정한다.

RUN

쉘 스크립트 혹은 명령어를 실행한다.

VOLUME

호스트와 공유할 디렉토리를 지정한다.

CMD

컨테이너가 시작됐을 때 실행할 실행 파일 혹은 쉘 스크립트를 지정한다.

ADD

호스트에서 이미지로 복사할 파일을 지정한다.

EXPOSE

호스트와 연결할 포트 번호를 지정한다.

3. Example

FROM centos:centos6.8
MAINTAINER HyeonilJeong <dev.nuti0102@gmail.com>

ENV V_NGINX=1.12.1 \
  V_TOMCAT=8.5.23 \
  DIR_CONTENTS=/opt/project/contents \
  STATIC_DOMAIN=http://static.nuti.pe.kr \
  VM_XMS=256m \
  VM_XMX=1024m \
  VM_XX_NEW_SIZE=384m \
  VM_XX_MAX_PERM_SIZE=128m \
  DB_HOST=db.nuti.pe.kr \
  DB_NAME=blog \
  DB_USERNAME=nuti \
  DB_PASSWORD=db_pw

RUN rpm --import /etc/pki/rpm-gpg/RPM* \
  && yum update -y

ADD repos.d/nginx.repo /etc/yum.repos.d/nginx.repo

RUN yum install -y nginx $V_NGINX \
  && rm -f /etc/nginx/conf.d/*.conf \
  && yum install -y wget \
  && rpm -Uvh  http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm \
  && rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

RUN yum install -y supervisor
RUN yum install -y java-1.8.0-openjdk-devel.x86_64
RUN mkdir -p $DIR_CONTENTS

ADD nginx/nginx.conf /etc/nginx/nginx.conf
ADD nginx/copy.conf /etc/nginx/conf.d/copy.conf
ADD supervisor/supervisord.conf /etc/supervisord.conf
ADD scripts/start.sh /scripts/start.sh
ADD tomcat /tomcat
ADD war/ROOT.war /tomcat/webapps/ROOT.war

RUN chmod +x /scripts/start.sh \
 && chmod +x /tomcat/bin/startup-tomcat.sh

EXPOSE 80 8080

VOLUME $DIR_CONTENTS
VOLUME /tomcat/logs

CMD ["/scripts/start.sh"]