FROM lpicanco/java11-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
- FROM lpicanco/java11-alpine
- alpine이라는 가벼운 버전의 리눅스에 java11이 설치된 docker image를 기반으로 image를 만든다는 것이다.
- ARG JAR_FILE
COPY ${JAR_FILE} app.jar
- 인자로 스프링부트 jar파일을 받아 app.jar라는 이름의 파일로 copy한다는 의미이다.
- ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
- 참고
- 도커 컨테이너가 실행되었을 때 ENTRYPOINT에 기입된 옵션들로 이뤄진 명령을 실행한다.
- ENTRYPOINT ["<실행 파일>", "<매개 변수1>", "<매개 변수2>"] 형식
- 여기서는 /app.jar 파일을 실행한다는 것 같다.
group 'org.example'
version '1.0-SNAPSHOT'
plugins {
// jenkins 에서 ./gradlew docker 혹은 dockerRun 이라는 task 를 실행하기위해 필요한 플러그인들
id 'com.palantir.docker' version '0.25.0'
}
// id 'com.palantir.docker' 플러그인을 추가하면 반드시 docker{}를 명시해줘야 빌드테스트 오류가 나지 않는다.
docker {
println("gradle docker-plugin start = spring-example:${project.version}")
name "spring-example:${project.version}"
files tasks.bootJar.outputs.files
tag 'DockerHub', "guswns3371/spring-example:${project.version}"
buildArgs(['JAR_FILE': tasks.bootJar.outputs.files.singleFile.name])
}
- name "spring-example:${project.version}"
- 해당 프로젝트로 만든 도커 이미지의 name을 "spring-example:1.0-SNAPSHOT"으로 설정한다.
- 도커에서 repository 이름이 반드시 소문자여야 하므로 spring-example로 설정한다.
- files tasks.bootJar.outputs.files
- Dockerfile에서 사용할 수 있는 파일을 명시해준다.
- 'com.palantir.docker' 플러그인은 이 파일을 임시경로에 저장한뒤, docker build 명령에서 사용될 파일로 해당 파일만 노출시킨다.
- 'com.palantir.docker' 플러그인에 대한 configuration의 내용을 실행한다.
- "spring-example:1.0-SNAPSHOT"이라는 이름의 도커 이미지가 생성된다.
- docker 설치 후 /var/run/docker.sock의 permission denied 발생하는 경우
- docker가 설치된 환경에서 "sudo chmod 666 /var/run/docker.sock" 명령어를 실행해줘야 한다.
./gradlew docker
server:
port: 80
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://db:3306/spring_example?serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true&useSSL=false&characterEncoding=UTF-8
username: root
password: password123
jpa:
properties:
hibernate:
ddl-auto: update
show-sql: true
format-sql: true
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
generate-ddl: true
open-in-view: false
session:
store-type: jdbc
server:
port: 80
driver-class-name: com.mysql.cj.jdbc.Driver
dependencies {
implementation group: 'mysql', name: 'mysql-connector-java', version: '8.0.15'
}
url: jdbc:mysql://db:3306/spring_example?serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true&useSSL=false&characterEncoding=UTF-8
username: root
password: password123