Dockerfile
2020. 10. 4. 01:56ㆍ클라우드/Docker
스프링부트로 TodoList 만든 자바 앱을 도커에 띄우기 위해 Dockerfile을 만들었다.
# Start with a base image containing Java runtime
FROM adoptopenjdk/openjdk11:alpine
# Add Author info
LABEL maintainer="narae456@gmail.com"
# Add a volume to /tmp
VOLUME /tmp
# Make port 8080 available to the world outside this container
EXPOSE 8080
# The application's jar file
ARG JAR_FILE=build/libs/todo-0.0.1-SNAPSHOT.jar
# Add the application's jar to the container
ADD ${JAR_FILE} to-do-springboot.jar
# Run the jar file
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/to-do-springboot.jar"]
FROM adoptopenjdk/openjdk11:alpine
생성할 이미지
이 앱이 openjdk11 이미지를 기반으로 실행된다는 뜻
LABEL maintainer="narae456@gmail.com"
이미지의 메타데이터. 버전 정보, 작성자, 코멘트 등을 key-value 형태로 작성
maintainer를 추가해서 관리자가 누구인지 명시함
VOLUME /tmp
volume 디렉터리 위치 설정
/tmp 밑에 컨테이너가 필요한 여러가지 데이터를 저장하겠다는 뜻
EXPOSE 8080
Dockerfile 빌드로 생성된 이미지에서 열어줄 포트
ARG JAR_FILE=build/libs/todo-0.0.1-SNAPSHOT.jar
build 시점에만 사용되는 변수
gradle build
후 생긴 .jar
파일의 상대경로를 JAR_FILE
에 담아둠
ADD ${JAR_FILE} to-do-springboot.jar
파일을 추가함. 파일 위치는 Dockerfile이 위치한 디렉토리를 기준으로 함
앞에서 지정한 JAR_FILE
을 to-do-springboot.jar
라는 이름으로 가져와서 추가했음
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/to-do-springboot.jar"]
컨테이너가 시작될 때 실행될 명령어. 실제 명령어를 띄어쓰기 기준으로 잘라서 리스트로 만들면 됨
만들어둔 자바 앱을 실행시키는 명령어를 넣었음
Reference
- Docker 공식 문서 - Dockerfile
- 도커 이미지 생성 가이드
- Spring Boot 도커 이미지 최적화
- 도커(Docker) Volume 사용법
- 헷갈리는 Dockerfile 명령어
'클라우드 > Docker' 카테고리의 다른 글
Docker Compose (0) | 2020.10.17 |
---|---|
Dockerizing Spring Boot Application (0) | 2020.10.04 |
hello world (0) | 2020.10.04 |
Docker Image (0) | 2020.10.01 |
Docker Container (0) | 2020.10.01 |