2015년 3월 23일 월요일

Docker 개발환경 셋팅

1.  개발환경 구축

개발환경의 구축에 방법론은 여러가지 방법으로 나뉠 수 있을 것으로 예상됩니다.
순수 docker hub에서 제공되는 기본 이미지를 토대로 dockerfile을 상세히 작성하여 docker build를 실행하여 환경을 구축하거나 기본적인 서버의 환경을 셋팅한 이미지를 생성하여 해당 셋팅된 이미지를 기반으로 dockerfile를 작성하여 구축하는 방법이나 모든 개발환경을 셋팅해놓은 이미지를 생성하고 해당 이미지에 소스파일만 가져와 개발환경을 세팅하는 방법등 여러가지 방법을 모색해 볼 수 있을 것으로 예상 됩니다.

이에 기본적인 이미지를 생성하고 해당 이미지를 토대로 개발환경을 셋팅하는 방식으로 개발환경 구축에 대한 설명을 진행한다.

1.1    기본 환경 셋팅

1.1.1     커스텀 이미지

기본 이미지를 다운 받아서 해당 이미지에세 대해서 필요한 설정을 진행한다.
A.     이미지 다운
B.     해당 이미지 실행
C.     해당 이미지내에서 필요한 설정 진행
A.     user생성
B.      디렉토리 셋팅
C.      tool설치
D.     application설치
E.      등등
D.     해당 이미지 저장
E.      해당 이미지의 실행
A.     외부 노출 port설정
-       등등
마지막을 해당 컨테이너에 대해서 commit 명령어를 통해서 이미지를 생성한다.
리눅스 환경 설정 예제
기본 이미지 다운로드
$ sudo docker pull centos:latest
centOS 최신버전 실행 (bash모드)
$ sudo docker run -i -t --name test centos:latest /bin/bash
wget패키지 설치
[root@9fd2a202f4fc /]# yum install wget –y
tar패키지 설치
[root@9fd2a202f4fc /]# yum install tar –y
git패키지 설치
[root@9fd2a202f4fc /]# yum install git -y
java설치
[root@9fd2a202f4fc /]# yum install java-1.7*-devel*
java환경설정(아래의 해당 환경 설정 추가 )
[root@9fd2a202f4fc /]# vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.71-2.5.3.1.el7_0.x86_64/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$CLASSPATH:$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
user생성
[root@9fd2a202f4fc /]#useradd test
계정 테스트로 이동
[root@9fd2a202f4fc /]# su – test
디렉토리 생성
[test@9fd2a202f4fc ~]$ mkdir apps
[test@9fd2a202f4fc ~]$ mkdir service
[test@9fd2a202f4fc ~]$ mkdir service/docs
디렉토리 이동
[test@9fd2a202f4fc ~]$ cd apps/
톰캣 설치
[test@9fd2a202f4fc apps]$ tar -xvf apache-tomcat-8.0.15.tar.gz
컨테이너에서 exit
[test@9fd2a202f4fc apps]$exit
해당 컨테이너를 BaseImage로 저장
docker@docker-ThinkCentre-M82:~/dockerfile_test$ docker commit test base_image:1.0
위와 같은 절차를 통하여 java 와 톰캣이 설치된 BaseImage를 생성하였습니다.
개발환경에 따라 설치가 필요한 패키지나 application의 종류가 각기 다를 수 있습니다. 다른 개발환경에 대해서는 BaseImage를 더 세분화 하여 필요한 패키지를 설치를 하고 다른 버전의 BaseImage를 생성하여 사용하면 됩니다.

1.1.2     커스텀 이미지 저장소 저장

저장소에 종류는 여러가지가 있으나 dockerHub를 이용하여 push하고 해당 이미지를 기반으로 실제 사용할 컨테이너를 생성하도록 한다.

1.1.3     커스텀 이미지 + Dockerfile

기본적인 설치를 진행한 커스텀 이미지를 다운받고
해당 이미지를 토대로 Dockerfile를 생성하여 필요한 application 설치 및 사용자계정 변경등의 작업을 진행한다.

커스텀 이미지 다운로드(특정 인터넷의 저장소에 저장이 되어있다고 가정)
$ sudo docker pull 192.168.0.39:5000/base_image:1.0

dockerfile
# VERSION               0.1
#커스텀 이미지를 토대로 컨테이너를 생성
FROM base_image:1.0

USER test
#git소스 파일을 저장할 디렉토리를 생성하고 해당 프로젝트를 다운 받는다.
RUN cd /home/test/
RUN mkdir /home/test/src
RUN git clone https://github.com/longbe00/GitTest.git /home/test/src/GitTest
RUN cp  -R /home/test/src/GitTest/testApiServer/target/testApiServer.war ~/service/docs/
ADD server.xml /home/test/apps/apache-tomcat-8.0.15/conf/server.xml
#톰캣이 실행될 port
EXPOSE 8080
#이미지가 생성되면서 톰캣을 실행할 수 있도록 처리
ENTRYPOINT ["/home/test/apps/apache-tomcat-8.0.15/bin/catalina.sh","run"]

해당 dockerfile을 토대로 실행할 이미지를 생성한다.
$ sudo docker build -t testImage:1.0.

해당 이미지를 실행하여 개발환경을 구축한다.
해당 이미지 실행
docker@docker-ThinkCentre-M82:~/dockerfile_test$ docker run -i -t -p 8080:8080 test_api:1.0
(정상 실행여부를 확인하기 위하여 정상출력이 되도록 실행)
docker@docker-ThinkCentre-M82:~/dockerfile_test$ docker run -d -p 8080:8080 test_api:1.0
(백그라운드로 실행되도록 실행)

1.1.4     기본 이미지 + Dockerfile

Dockerfile 에서 사용할 기본 이미지에 대해서 pull명령어로 다운로드를 진행하고 build를 통하여 개발환경에 쓰일 이미지를 생성한다.

dockerfile에서 설정에 필요한 명령어를 sh 스크립트를 통해서 일괄적으로 처리 할 수 있도록 sh파일을 생성하고 해당 쉘스크립트 파일을 ADD명령어를 통해서 컨테이너에 추가하여 실행한다면 좀 더 손 쉽게 dockerfile을 작성할 수 있다.
FROM ubuntu:14.04

RUN apt-get update
RUN apt-get install -y nginx \
    git make pbuilder python-mock python-configobj \
    python-support cdbs

RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
RUN chown -R www-data:www-data /var/lib/nginx

WORKDIR /tmp
RUN git clone https://github.com/BrightcoveOS/Diamond.git
RUN cd Diamond && git checkout v3.4 && make deb
RUN dpkg -i Diamond/build/diamond_3.4.0_all.deb
RUN cp /etc/diamond/diamond.conf.example /etc/diamond/diamond.conf

ADD entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

EXPOSE 80
EXPOSE 443



댓글 1개: