Skip to content
This repository was archived by the owner on Jul 21, 2024. It is now read-only.

Commit 0eb9ebf

Browse files
committed
* Spring Native docker build arm64/amd64
1 parent 0772087 commit 0eb9ebf

File tree

4 files changed

+68
-21
lines changed

4 files changed

+68
-21
lines changed

.dockerignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
/.github
2+
/.gradle
3+
/.idea
4+
/Dockerfile
5+
/webdav.log
6+
/webdav.log*
7+
/build

.github/workflows/docker.yml

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,11 @@ env:
2929
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
3030
jobs:
3131
buildx:
32-
runs-on: ubuntu-latest
32+
runs-on: ubuntu-22.04
3333
steps:
3434
-
3535
name: Checkout
36-
uses: actions/checkout@v2
36+
uses: actions/checkout@v3
3737
-
3838
name: Get current date
3939
id: date
@@ -58,26 +58,35 @@ jobs:
5858
key: ${{ runner.os }}-buildx-${{ github.sha }}
5959
restore-keys: |
6060
${{ runner.os }}-buildx-
61-
- name: Setup Gradle
61+
-
62+
name: Setup Gradle
6263
uses: gradle/gradle-build-action@v2
6364
- uses: actions/setup-java@v3
6465
with:
6566
distribution: 'temurin'
6667
java-version: '17'
6768
cache: 'gradle'
68-
- name: Run build with Gradle Wrapper
69-
run: chmod +x ./gradlew;./gradlew :bootBuildImage
7069
-
7170
name: Login to Docker Hub
7271
uses: docker/login-action@v2
7372
with:
7473
username: ${{ secrets.DOCKERHUB_USERNAME }}
7574
password: ${{ secrets.DOCKERHUB_TOKEN }}
75+
-
76+
run: chmod +x ${{github.workspace}}/gradlew
7677
# Set VERSION_INFORMATION
77-
- run: echo "VERSION_INFORMATION=$(${{github.workspace}}/gradlew -q ciPrintVersionInformation)" >> $GITHUB_ENV
78-
- name: Push to Docker Hub
79-
run: docker push eritpchy/webdav-aliyundriver:latest
80-
- name: Push to Docker Hub
81-
run: docker push eritpchy/webdav-aliyundriver:${{ env.VERSION_INFORMATION }}-${{ steps.date.outputs.today }}
82-
83-
78+
-
79+
run: echo "VERSION_INFORMATION=$(${{github.workspace}}/gradlew -q ciPrintVersionInformation)" >> $GITHUB_ENV
80+
-
81+
name: Build and push
82+
uses: docker/build-push-action@v2
83+
with:
84+
context: .
85+
file: ./Dockerfile
86+
platforms: linux/amd64,linux/arm64
87+
push: ${{ github.event_name != 'pull_request' }}
88+
cache-from: type=local,src=/tmp/.buildx-cache
89+
cache-to: type=local,dest=/tmp/.buildx-cache
90+
tags: |
91+
eritpchy/webdav-aliyundriver:latest
92+
eritpchy/webdav-aliyundriver:${{ env.VERSION_INFORMATION }}-${{ steps.date.outputs.today }}

Dockerfile

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,26 @@
1-
FROM maven:3.6.3-jdk-11 AS maven
2-
USER root
3-
COPY ./ /tmp/code
4-
RUN cd /tmp/code && mvn clean package -DskipTests
1+
FROM ubuntu:22.04 as builder
2+
RUN apt update
3+
RUN DEBIAN_FRONTEND=noninteractive apt install -y curl build-essential libz-dev zlib1g-dev
4+
RUN curl -sL https://get.graalvm.org/jdk | bash -s --
5+
ENV LANG=C.UTF-8
6+
RUN cd /graalvm-ce-java* \
7+
&& GRAALVM_PATH=$(pwd) \
8+
&& echo $GRAALVM_PATH \
9+
&& echo "export PATH=\"$GRAALVM_PATH/bin:\$PATH\"" >> /tmp/env \
10+
&& echo "export JAVA_HOME=\"$GRAALVM_PATH\"" >> /tmp/env
11+
COPY ./build.gradle /tmp/webdav-aliyundriver/build.gradle
12+
COPY ./gradle /tmp/webdav-aliyundriver/gradle
13+
COPY ./gradlew /tmp/webdav-aliyundriver/gradlew
14+
COPY ./settings.gradle /tmp/webdav-aliyundriver/settings.gradle
15+
RUN . /tmp/env && cd /tmp/webdav-aliyundriver && ./gradlew --info dependencies
16+
COPY ./ /tmp/webdav-aliyundriver
17+
RUN . /tmp/env \
18+
&& cd /tmp/webdav-aliyundriver \
19+
&& ./gradlew nativeCompile --no-daemon
20+
RUN chmod +x /tmp/webdav-aliyundriver/build/native/nativeCompile/webdav-aliyundriver
521

6-
7-
FROM openjdk:11-jdk-oracle
8-
COPY --from=maven /tmp/code/target/*.jar /webdav.jar
22+
FROM ubuntu:22.04
23+
COPY --from=builder /tmp/webdav-aliyundriver/build/native/nativeCompile/webdav-aliyundriver /webdav-aliyundriver
24+
ENV LANG=C.UTF-8
925
EXPOSE 8080
10-
ENV JAVA_OPTS="-Xmx1g"
11-
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /webdav.jar"]
26+
ENTRYPOINT ["/webdav-aliyundriver"]

build.gradle

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,26 @@ tasks.named('test') {
4141
useJUnitPlatform()
4242
}
4343

44+
compileJava.options.encoding = 'UTF-8'
45+
tasks.withType(JavaCompile) {
46+
options.encoding = 'UTF-8'
47+
}
48+
4449
task ciPrintVersionInformation {
4550
println version
4651
}
4752

53+
// https://graalvm.github.io/native-build-tools/latest/gradle-plugin.html
54+
graalvmNative {
55+
binaries {
56+
main {
57+
buildArgs.add('-H:+AddAllCharsets')
58+
buildArgs.add('--allow-incomplete-classpath')
59+
buildArgs.add('--enable-url-protocols=http,https')
60+
}
61+
}
62+
}
63+
4864
bootBuildImage {
4965
builder = 'paketobuildpacks/builder:tiny'
5066
environment = [

0 commit comments

Comments
 (0)