Docker

Dockerfile로 도커사용하기

자곰 2023. 8. 10. 18:54

도커 파일(Dockerfile)은 도커 이미지를 빌드하는 데 사용되는 핵심 도구입니다. 도커 파일은 어플리케이션의 구성 요소, 설정, 환경 변수, 라이브러리 등을 정의하여 도커 이미지를 구성하는 데 도움을 줍니다. 이를 통해 개발자는 코드와 함께 어플리케이션의 실행 환경을 코드화할 수 있습니다.

Dockerfile을 통한 작업은 다음과 같이 진행됩니다.

  1. dockerfile을 작성
  2. dockerfile build해서 웹서버 이미지를 생성
  3. 빌드한 이미지를 컨테이너로 실행하며 구동

어떻게 도커 파일을 작성하고 사용하는지에 대해 자세히 알아보겠습니다.

Dockerfile 옵션

  • FROM : Docker Base Image (기반이 되는 이미지, <이미지 이름>:<태그> 형식으로 설정)
  • MAINTAINER : 메인테이너 정보 (작성자 정보)
  • RUN : Shell Script 또는 명령을 실행
  • CMD : 컨테이너가 실행되었을 때 명령이 실행
  • LABEL : 라벨 작성 (docker inspect 명령으로 label 확인할 수 있습니다.)
  • EXPOSE : 호스트와 연결할 포트 번호를 설정한다.
  • ENV : 환경변수 설정
  • ADD : 파일 / 디렉터리 추가
  • COPY : 파일 복사
  • ENTRYPOINT : 컨테이너가 시작되었을 때 스크립트 실행
  • VOLUME : 볼륨 마운트
  • USER : 명령 실행할 사용자 권한 지정
  • WORKDIR : "RUN", "CMD", "ENTRYPOINT" 명령이 실행될 작업 디렉터리
  • ARG : Dockerfile 내부 변수
  • ONBUILD : 다른 이미지의 Base Image로 쓰이는 경우 실행될 명령 수행
  • SHELL : Default Shell 지정

이런것들이 있습니다. 

정확한 동작은 써봐야 이해가 되니깐 직접 작성해보시면서 자기 환경에 맞추어 파일을 작성해보세요.

Dockerfile 빌드하기

도커 파일을 빌드하려면 아래와 같이

docker build [OPTIONS] PATH

docker build -t <이미지 이름>:<태그명> -f <도커파일 위치>
  • OPTIONS: Dockerfile을 빌드할 때 사용할 옵션을 지정합니다. 일반적으로 사용되는 옵션은 다음과 같습니다.
    • t 또는 -tag: 빌드한 이미지에 태그를 지정합니다.
    • f 또는 -file: 사용할 Dockerfile의 경로를 지정합니다. 기본값은 현재 디렉토리의 Dockerfile입니다.
  • PATH: Dockerfile이 있는 경로를 지정합니다.

이렇게 빌드하면 이미지가 생성됩니다. 생성된 이미지로 컨테이너를 실행시키면 파일에 작성한 스크립트대로 실행이될 것입니다.

예시

### Base Image 지정
FROM ubuntu:20.04
 
### TimeZone 환경 변수 지정
ENV TZ Asia/Seoul
 
### TimeZone 설정   
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
 
### /home/dev 폴더 생성
RUN mkdir /home/dev
 
### update 및 패키지 설치    
RUN apt update && apt -y install vim git tar gzip build-essential curl alien openjdk-8-jdk nginx
 
### nodejs 설
RUN curl -sL https://deb.nodesource.com/setup_14.x -o nodesource_14_setup.sh && bash nodesource_14_setup.sh && apt -y install nodejs
 
### build, tomcat, maven, nginx(default.conf) 파일 복사  
COPY build.tar.gz /home/dev/build.tar.gz
COPY tomcat-9.0.45.tar.gz /home/dev/tomcat-9.0.45.tar.gz
COPY apache-maven-3.8.1.tar.gz /home/dev/apache-maven-3.8.1.tar.gz
COPY default.conf /etc/nginx/conf.d/default.conf
 
### ubuntu01 계정 생성
RUN addgroup --gid 1100 ubuntu01 && adduser --disabled-password --home /home/dev --no-create-home --system -q --uid 1000 --ingroup ubuntu01 ubuntu01
 
### Github Source 파일 다운로드    
RUN git clone https://github.com/bc-hwang/TEST.git /home/dev/deverse
 
### /home/dev 폴더 이동  
WORKDIR /home/dev
 
### 암축 파일 해제   
RUN tar -zxvf apache-maven-3.8.1.tar.gz
RUN tar -zxvf tomcat-9.0.45.tar.gz
RUN tar -zxvf build.tar.gz
 
### maven link 설정
RUN ln -s /home/dev/apache-maven-3.8.1/bin/mvn /usr/bin/mvn
 
### Build 실행
RUN cd /home/dev/build && bash ./back_build.sh
RUN cd /home/dev/build && bash ./front_build.sh
 
### Nginx & Tomcat Service 실행   
CMD nginx -g 'daemon on;' && /home/dev/tomcat-9.0.45/bin/catalina.sh run
 
### 서비스 배포
EXPOSE 80 8080

혹시나 예시를 보고 싶을 수 있으니 여러 명령어를 사용하는 도커파일을 준비해왔습니다.

사용예시를 보고 감이 오셨으면 좋겠습니다. 

도커 파일을 사용할 줄 알게되면 Docker-compose도 찾게 될 것입니다. 다음에는 도커 컴포즈로 찾아오겠습니다

 

읽어주셔서 감사합니다.