티스토리 뷰

우리가 개발한 애플리케이션을 Docker image로 build하려면 "Dockerfile" 이라는 이름의 파일을 작성해주어야 하는데
이 Dockerfile에는 Docker 이미지로 build하기위해서 어떠한 명령어들을 수행해야하는지 명령어가 적힌 파일이다. 해당 명령어를 모두 처리하면 Docker 이미지로 build할 수 있다. 이제 주로 쓰이는 명령어들을 알아보자.

FROM

FROM 이미지명:태그명

어떤이미지를 사용할 것인지 이미지명과 태그명을 적는다. 보통 Dockerfile의 최상단에 위치하는 명령어이다.

이미지명과 태그명은 도커 헙 공식문서 에서 확인할 수 있다.

예를들어 openjdk 이미지의 최신버전을 사용하기 위해서는 FROM openjdk:latest 라고 적어주면 되고 터미널에서 실행할 땐 docker pull openjdk:latest 라고 실행하면된다.

LABEL

LABEL 레이블이름=값

LABEL 레이블이름=값의 형식으로 이미지에 부가적인 설명을 위한 레이블을 추가할 때 사용한다.

 

LABEL description="openjdk"

이 이미지는 openjdk라는걸 설명한다.

EXPOSE

EXPOSE 숫자

생성된 이미지로 컨테이너를 구동할 때 어떤 포트를 사용하는지 알려준다. EXPOSE를 사용한다고 해서 컨테이너를 구동할 때 자동으로 해당포트를 호스트 포트와 연결하지 않는다. 외부와 연결하기위해 지정한 포트를 호스트 포트와 연결해야 한다는 정보를 제공할 뿐

실제로 외부에서 접속하려면 docker run으로 이미지를 컨테이너로 빌드할 때 반드시 -p 옵션을 넣어 포트를 연결해야 한다.

COPY

COPY 호스트경로 컨테이너경로

호스트경로에 있는 파일들을 컨테이너경로로 복사합니다.

 

COPY ./target/app.jar /usr/local/app.jar

Maven을 통해 생성된 jar파일을 컨테이너의 /usr/local경로로 복사한다. COPY 명령어말고 ADD 명령어도 있는데 ADD는 일반 파일뿐만아니라 압축파일 같은것도 옮길 수 있다.

WORKDIR

WORKDIR 이동할경로

리눅스 명령어에서 cd와 동일한 명령어이다.

주의할 점은 해당 명령어가 실행되면 그 이후에 실행되는 명령어들은 이동된 경로에서 실행된다.

ENTRYPOINT

ENTRYPOINT ["명령어", "옵션1", "옵션2", "옵션N"]

컨테이너를 구동할 때 첫번째로 실행되는 명령어이다. 인덱스0번에는 실행할 명령어가 오고 그 이후는 명렁어 실행 시 추가되는 옵션들을 적어준다.

 

근데 가만보면 자바스크립트에서 배열을 선언한 것과 비슷한데 저 옵션명령어를 넣는 기준은 어떻게 되는 걸까?. 예를들어 실행할 명령어가 java -jar app.jar -Dkey=value 라고 가정해보자. 그리고 ENTRYPOINT에 작성하게되면

해당 명령어를 공백으로 split을 한 값들을 넣어주면된다. ["java", "-jar", "app-jar", "-Dkey=value"]

ENV

ENV KEY VALUE

환경 변수를 설정하기 위해서 사용하며 설정된 환경 변수는 이미지 빌드 시에도 사용되고 해당 컨테이너에서 돌아가는 애플리케이션도 접근할 수 있습니다.

 

ENV spring.profiles.active production

스프링 애플리케이션을 production 환경으로 띄운다.

ARG

ARG 이름
ARG 이름=기본값

docker build 커맨드로 이미지를 빌드 시 --build-arg 옵션을 통해 아래처럼 넘길 수 있다.

ARG port
docker build --build-arg port=8080

 

만약에 기본값을 지정해주면 --build-arg 옵션으로 해당인자가 넘어오지 않을 때 사용됩니다.

ARG port=8080
EXPORT ${port}

RUN

RUN 명령어

이미지 생성 시 실행되는 명렁어들이다.

 

RUN apt-get update \
    && apt-get install -y git 

패키지를 업데이트 하고 git을 인스톨 한다.

728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함