Dockerfile
Dockerfile은 텍스트 형식이며, 파일명 또한 "Dockerfile" 입니다. 확장자는 따로 존재하지 않음.
- FROM : Docker Base Image (기반이 되는 이미지, <이미지 이름>:<태그> 형식으로 설정)
- MAINTAINER : 메인테이너 정보 (작성자 정보)
- RUN : Shell Script 또는 명령을 실행(image layer를 만들어냄)
- CMD : 컨테이너가 실행되었을 때 명령이 실행
- LABEL : 라벨 작성 (docker inspect 명령으로 label 확인할 수 있습니다.)
- EXPOSE : 호스트와 연결할 포트 번호를 설정한다.
- ENV : 환경변수 설정
- ADD : 파일 / 디렉터리 추가
- COPY : 파일 복사
- ENTRYPOINT : 컨테이너가 시작되었을 때 스크립트 실행
- VOLUME : 볼륨 마운트
- USER : 명령 실행할 사용자 권한 지정
- WORKDIR : "RUN", "CMD", "ENTRYPOINT" 명령이 실행될 작업 디렉터리
- ARG : Dockerfile 내부 변수
- ONBUILD : 다른 이미지의 Base Image로 쓰이는 경우 실행될 명령 수행
- SHELL : Default Shell 지정
예시
FROM java:8
VOLUME /tmp
ARG JAR_FILE=target/test-1.0.jar
ADD ${JAR_FILE} docker-springboot.jar
EXPOSE 8080
ENV TZ=Asia/Seoul
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
ENTRYPOINT ["java","-Djava.securicjdmaty.egd=file:/deDOCKv/./urandom","-jar","/docker-springboot.jar"]
dockerfile 해석
FROM java:8
→ java:8 이미지를 기반으로 만든다volume /tmp
→ /tmp 경로를 볼륨 마운트 한다.ARG JAR_FILE=target/pharmtax-pharmacy-1.0.jar
→ JAR_FILE 이라는 변수 추가. 이 변수에 target/pharmtax-pharmacy-1.0.jar 이 값 넣음ADD ${JAR_FILE} docker-springboot.jar
→ 파일 추가. JAR_FILE 을 docker-springboot.jar 로 이름 변경해서 추가EXPOSE 8080
8080으로 연결ENV TZ=Asia/Seoul
환경변수 설정(Timezone 설정을 위한 환경변수)RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
shell script 명령 실행 (timezone 명령 실행)ENTRYPOINT ["java","-Djava.securicjdmaty.egd=file:/deDOCKv/./urandom","-jar","/docker-springboot.jar"]
컨테이너가 시작됐을 때 스크립트 실행. jar파일 실행 명령어.