diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..48543eb --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +* +!project/build.properties +!project/build.sbt +!src/main/* +!build.sbt diff --git a/.github/workflows/release_docker_jar.yml b/.github/workflows/release_docker_jar.yml index ed9e02a..85b7516 100644 --- a/.github/workflows/release_docker_jar.yml +++ b/.github/workflows/release_docker_jar.yml @@ -21,7 +21,7 @@ jobs: name: sync_job.jar path: lib/ - name: Build image - run: docker build . -f docker/Dockerfile -t syncjob + run: DOCKER_BUILDKIT=1 docker build . -f docker/Dockerfile -t syncjob --target package-ci - name: Log into registry run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login docker.pkg.github.com -u ${{ github.actor }} --password-stdin - name: Push image diff --git a/docker/Dockerfile b/docker/Dockerfile index 45293c1..12cf7da 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,3 +1,22 @@ -FROM flink:1.11.2-scala_2.12 +######################### +# Stage 1: sbt assembly # +######################### -ADD lib/sync_job.jar /opt/flink/usrlib/ \ No newline at end of file +FROM mozilla/sbt:8u232_1.4.9 AS assembly +WORKDIR /home +COPY . . +RUN sbt assembly + +####################### +# Stage 2a: packaging # +####################### + +FROM flink:1.11.2-scala_2.12 AS package +COPY --from=assembly /home/lib/sync_job.jar /opt/flink/usrlib/ + +################################################### +# Stage 2b: packaging in CI (jar already present) # +################################################### + +FROM flink:1.11.2-scala_2.12 AS package-ci +ADD lib/sync_job.jar /opt/flink/usrlib/