基於Java11最小化Spring Boot 2 的Docker映象檔案配置
使用Jigsaw模組, Dockerfile配置如下:
FROM alpine:3.8 AS builder WORKDIR /opt ARG JDK_TAR=openjdk-11+28_linux-x64-musl_bin.tar.gz ARG JDK_DOWNLOAD_PREFIX=https://download.java.net/java/early_access/alpine/28/binaries RUN wget -q "$JDK_DOWNLOAD_PREFIX/$JDK_TAR" && \ wget -q "$JDK_DOWNLOAD_PREFIX/$JDK_TAR.sha256" RUN cat $JDK_TAR.sha256 | xargs -I{} echo "{} $JDK_TAR" | sha256sum -c - && \ tar zxf "$JDK_TAR" && \ ln -s jdk-11 java && \ rm -f "$JDK_TAR" "$JDK_TAR.sha256" ENV JAVA_HOME=/opt/java ENV PATH="$PATH:$JAVA_HOME/bin" WORKDIR /root/dev ENV GRADLE_USER_HOME=/root/dev/.cache RUN mkdir -p /root/dev/.cache COPY build.gradle gradlew gradlew.bat settings.gradle gradle.properties /root/dev/ COPY gradle /root/dev/gradle RUN ./gradlew --no-daemon --refresh-dependencies --version COPY src ./src RUN ./gradlew --no-daemon build # Make sure only 1 jar file is assembled RUN test $(find ./build/libs -type f -name '*.jar' | wc -l) -eq 1 RUN jlink \ --verbose \ --module-path "$JAVA_HOME/jmods" \ --add-modules java.base,java.logging,java.xml,jdk.unsupported,java.sql,java.naming,java.desktop,java.management,java.security.jgss,java.instrument,jdk.management \ --compress 2 \ --no-header-files \ --no-man-pages \ --strip-debug \ --output /opt/jre FROM alpine:3.8 WORKDIR /usr/src/app ENV JAVA_HOME=/opt/jre ENV LANG=C.UTF-8 ENV PATH="$PATH:$JAVA_HOME/bin" ENV APP_TIMEZONE=UTC COPY --from=builder /opt/jre /opt/jre COPY --from=builder /root/dev/build/libs/*.jar dagger.jar COPY newrelic/newrelic.jar newrelic/newrelic.yml ./ EXPOSE 80 CMD ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "dagger.jar"] |
build.gradle配置點選標題見原文。
相關文章
- 基於Spring Boot 2.3以上版本方便建立分層Docker映象Spring BootDocker
- Spring Boot 建立 Docker 映象Spring BootDocker
- Spring Boot 配置檔案Spring Boot
- 結合SpEL使用@Value-基於配置檔案或非配置的檔案的值注入-Spring BootSpring Boot
- Docker配置檔案配置映象加速器Docker
- spring boot基於Java的容器配置Spring BootJava
- 基於 Docker 映象部署 go 專案DockerGo
- Spring Boot的配置檔案管理技巧Spring Boot
- spring boot配置檔案相關Spring Boot
- Spring Boot 配置檔案總結Spring Boot
- Spring Boot + MYSQL + Docker的配置 - DEVSpring BootMySqlDockerdev
- 精進 Spring Boot 03:Spring Boot 的配置檔案和配置管理,以及用三種方式讀取配置檔案Spring Boot
- Spring Boot @PropertySource 載入指定配置檔案、@ImportResource 匯入Spring 配置檔案Spring BootImport
- Spring Boot讀取配置檔案的幾種方式Spring Boot
- 基於cloudflare workers自建docker映象CloudDocker
- spring boot啟動載入外部配置檔案Spring Boot
- Spring Boot: 加密應用配置檔案敏感資訊Spring Boot加密
- spring boot更改配置檔案 application.properties的位置Spring BootAPP
- spring cloud+spring boot 電子商務spring boot獲取配置檔案的屬性CloudSpring Boot
- Spring boot學習(二) Spring boot基礎配置Spring Boot
- 關於spring的配置檔案總結Spring
- Dragonfly 基於 P2P 的檔案和映象分發系統Go
- Spring Boot EL獲取配置檔案中的值的方式Spring Boot
- Spring Boot入門(一):使用IDEA建立Spring Boot專案並使用yaml配置檔案Spring BootIdeaYAML
- 使用 Docker 部署 Spring Boot 專案DockerSpring Boot
- 使用Docker部署Spring Boot專案DockerSpring Boot
- 正確映象檔案配置
- 基於Spring Boot與Spring Data JPA的多資料來源配置Spring Boot
- Spring Boot加密應用配置檔案敏感資訊(jasypt)Spring Boot加密
- Spring Boot第二彈,配置檔案怎麼造?Spring Boot
- spring boot 打war包後沒有配置檔案Spring Boot
- Spring Boot的檔案上傳Spring Boot
- 基於 Gitlab 交付 Go 程式的 Docker 映象GitlabGoDocker
- spring、spring-boot配置檔案屬性內容加解密Springboot解密
- Spring Boot(十七):使用 Spring Boot 上傳檔案Spring Boot
- 從頭基於空映象scratch建立一個新的Docker映象Docker
- 基於Spring Batch的Spring Boot的教程 - BaeldungBATSpring Boot
- springmvc基於xml配置檔案SpringMVCXML