본문 바로가기
Knowledge/Linux & Container

Dockerfile 로 간단하게 빌드 환경 이미지화 하기

by 미네마네모 2020. 6. 23.

개요

내가 개발하는 소프트웨어들의

개발 환경이 같으면 좋겠지만 그렇지 않은 경우가 허다하다...

서비스1은 최신버전은 gcc/g++ 지원
서비스2는 하위 호환을 위해 gcc 하위 버전
서비스3은 JDK 1.8 지원
등등

위와 같이 서비스마다 개발 환경을 가상머신으로 구축하자니

리소스도 딸리고 가상머신 껏다 켰다 하자니 귀찮고...

 

하지만!!

도커 이미지로 각자의 개발 환경을 만들어 두면 참 편하다...

신세계를 맛볼 수 있다...

 

지금부터 Dockerfile로 이미지를 만들고

볼륨 쉐어링 옵션 정도만 사용하여 빠르게 개발 환경을 구축 하는 방법을 알아 보자


Dockerfile 예제 (ExtJS Sencha 빌드 환경 만들기)

FROM centos:centos7

# 사용자 지정
USER root

# 언어셋 설치
RUN yum clean all && yum -y update

# 기본적으로 필요한 OS 패키지를 설치한다.
RUN  yum -y install tar unzip vi vim telnet net-tools curl openssl wget \
    && yum -y install java-1.8.0-openjdk-devel.x86_64 \
    && yum clean all

# wget으로 ExtJS 빌드 도구인 Sencha 설치 파일을 내부 데이터 서버에서 가져오는 명령어
RUN wget ftp://192.168.1.100/bamboo/mg/download/cmd-6.6.0-linux-64-no_jre.zip \
    && unzip cmd-6.6.0-linux-64-no_jre.zip

# 대화형 스크립트로 이루어진 sencha 설치 파일에 Enter 및 동의한다는 대화 커맨드를 입력
RUN echo -e "\no\n\n\n\n\n\n\n1\n\n\n1\n"  \
    | ./SenchaCmd-6.6.0.13-linux-amd64.sh

# 컨테이너 실행시 실행될 명령
CMD ["/bin/bash"]

ExtJS Sencha 설치 파일을 공식 홈페이지에서 받기 위해서는

아쉽게도 인증 token이 필요하여 부득이하게 내부의 데이터 서버에

다운받아 ftp로 받아오도록 하였다.

추가적으로 설치 파일이 대화형 스크립트로 이루어져있어서 위와 같이 사용하였다.
(아래는 대화형 스크립트에 명령을 주는 다른 방법이다.)

더보기

대화형 스크립트에 위와 같이 echo, 파이프(|)를
이용한 방법 말고도 아래와 같은 방법을 사용할 수 있으나
Dockerfile에서 사용하는데는 제한이 있었다.

Why?

Dockerfile의 RUN 옵션에서 멀티라인 사용 시 '\'를 사용해야지만
그렇게되면 Enter(new line,, \n)을 사용할 수 없다.
마음 편하게 echo 명령어와 파이프(|)를 조합해서 사용하자!

쉘에서는 잘먹는다

RUN ./SenchaCmd-6.6.0.13-linux-amd64.sh <<END
 \
o \
 \
 \
 \ 
 \
 \
 \
1 \
 \
 \
1 \
 \
END
    

> 실제로는 ' o       1     1 ' 이렇게 먹힌다. (엔터 안먹음)

 

Docker 이미지 만들기

# 명령어
docker build -t {이미지 이름} {Dockerfile이 있는 경로}

# 예제
docker build -t sencha-builder .

 

Docker 이미지로 공유 디렉토리를 설정한 컨테이너 만들기

# 명령어
docker run -it --name {컨테이너 명} -v {호스트 PC 디렉토리 경로}:{컨테이너의 경로} {생성된 이미지} /bin/bash​

# 예제
docker run -it --name test -v /c/Users/MINE/workspace:/workspace sencha-builder /bin/bash

 

* 주의 *

windows 환경이라면 git bash에서 사용할때가 많은데 오류가 뜰때가 있다.

아래 링크 처럼 하면 된다.

https://minemanemo.tistory.com/60

 

docker toolbox 사용 시 Error response from daemon: invalid mode 에러 처리

에러 문구 $ docker run -it --name dev7 -v /c/Users/MINE/workspace:/workspace 이미지 이름 /bin/bash C:\Program Files\Docker Toolbox\docker.exe: Error response from daemon: invalid mode: \Program Fil..

minemanemo.tistory.com

 

댓글