Skip to content

Commit a93903c

Browse files
authored
Merge pull request #16 from OctopusSolutionsEngineering/add-multi-arch
Add multi arch
2 parents 9d287d0 + 74e3a6e commit a93903c

File tree

3 files changed

+76
-16
lines changed

3 files changed

+76
-16
lines changed

github/java-microservice/action.yaml

+32-4
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,14 @@ runs:
9292
distribution: adopt
9393
cache: 'maven'
9494

95+
- name: Set up QEMU
96+
uses: docker/setup-qemu-action@v3
97+
with:
98+
platforms: linux/amd64,linux/arm64
99+
100+
- name: Set up Docker Buildx
101+
uses: docker/setup-buildx-action@v3
102+
95103
- name: Login to DockerHub
96104
if: ${{ inputs.docker_build == 'true' }}
97105
uses: docker/login-action@v2
@@ -351,17 +359,37 @@ runs:
351359
fi
352360
shell: bash
353361

362+
# The MySQL Docker image is built and pushed.
363+
# - name: Build, tag, and push image to Dockerhub
364+
# if: ${{ inputs.docker_build == 'true' }}
365+
# run: |
366+
# docker build -f src/main/docker/Dockerfile.legacy-jar -t octopussamples/octopub-${{ inputs.service_directory }}-mysql:${{ steps.determine_version.outputs.semVer }} .
367+
# docker push octopussamples/octopub-${{ inputs.service_directory }}-mysql:${{ steps.determine_version.outputs.semVer }}
368+
# docker tag octopussamples/octopub-${{ inputs.service_directory }}-mysql:${{ steps.determine_version.outputs.semVer }} octopussamples/octopub-${{ inputs.service_directory }}-mysql:latest
369+
# docker push octopussamples/octopub-${{ inputs.service_directory }}-mysql:latest
370+
# shell: bash
371+
# working-directory: java/${{ inputs.service_directory }}
372+
354373
# The MySQL Docker image is built and pushed.
355374
- name: Build, tag, and push image to Dockerhub
356375
if: ${{ inputs.docker_build == 'true' }}
357376
run: |
358-
docker build -f src/main/docker/Dockerfile.legacy-jar -t octopussamples/octopub-${{ inputs.service_directory }}-mysql:${{ steps.determine_version.outputs.semVer }} .
359-
docker push octopussamples/octopub-${{ inputs.service_directory }}-mysql:${{ steps.determine_version.outputs.semVer }}
360-
docker tag octopussamples/octopub-${{ inputs.service_directory }}-mysql:${{ steps.determine_version.outputs.semVer }} octopussamples/octopub-${{ inputs.service_directory }}-mysql:latest
361-
docker push octopussamples/octopub-${{ inputs.service_directory }}-mysql:latest
377+
docker buildx build -f src/main/docker/Dockerfile.legacy-jar -t octopussamples/octopub-${{ inputs.service_directory }}-mysql:${{ steps.determine_version.outputs.semVer }} -t octopussamples/octopub-${{ inputs.service_directory }}-mysql:latest --platform=linux/amd64,linux/arm64 --push .
362378
shell: bash
363379
working-directory: java/${{ inputs.service_directory }}
364380

381+
382+
# - name: Build and push Dockerhub
383+
# uses: docker/build-push-action@v6
384+
# with:
385+
# platform: linux/amd64,linux/arm64
386+
# push: true
387+
# tags: |
388+
# octopussamples/octopub-${{ inputs.service_directory }}-mysql:${{ steps.determine_version.outputs.semVer }}
389+
# octopussamples/octopub-${{ inputs.service_directory }}-mysql:latest
390+
# context: .
391+
# file: java/${{ inputs.service_directory }}/src/main/docker/Dockerfile.legacy-jar
392+
365393
- name: Login to GHCR
366394
uses: docker/login-action@v3
367395
with:

github/js-frontend/action.yaml

+20-4
Original file line numberDiff line numberDiff line change
@@ -176,17 +176,33 @@ runs:
176176
"-DrepositoryId=octopus-sales-public-snapshot" \
177177
"-Durl=s3://octopus-sales-public-maven-repo/snapshot"
178178
shell: bash
179+
180+
- name: Set up QEMU
181+
uses: docker/setup-qemu-action@v3
182+
183+
- name: Set up Docker Buildx
184+
uses: docker/setup-buildx-action@v3
185+
with:
186+
platforms: linux/amd64,linux/arm64
179187

180188
# The Docker image is built and pushed.
189+
# - name: Build, tag, and push image to Dockerhub
190+
# run: |
191+
# docker build -t octopussamples/octopub-frontend:${{ steps.determine_version.outputs.semVer }} .
192+
# docker push octopussamples/octopub-frontend:${{ steps.determine_version.outputs.semVer }}
193+
# docker tag octopussamples/octopub-frontend:${{ steps.determine_version.outputs.semVer }} octopussamples/octopub-frontend:latest
194+
# docker push octopussamples/octopub-frontend:latest
195+
# shell: bash
196+
# working-directory: js/frontend
197+
198+
# The MySQL Docker image is built and pushed.
181199
- name: Build, tag, and push image to Dockerhub
182200
run: |
183-
docker build -t octopussamples/octopub-frontend:${{ steps.determine_version.outputs.semVer }} .
184-
docker push octopussamples/octopub-frontend:${{ steps.determine_version.outputs.semVer }}
185-
docker tag octopussamples/octopub-frontend:${{ steps.determine_version.outputs.semVer }} octopussamples/octopub-frontend:latest
186-
docker push octopussamples/octopub-frontend:latest
201+
docker buildx build -f Dockerfile -t octopussamples/octopub-frontend:${{ steps.determine_version.outputs.semVer }} -t octopussamples/octopub-frontend:latest --platform=linux/amd64,linux/arm64 --push .
187202
shell: bash
188203
working-directory: js/frontend
189204

205+
190206
- name: Login to GHCR
191207
uses: docker/login-action@v3
192208
with:

js/frontend/Dockerfile

+24-8
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,37 @@
1-
FROM node as build
1+
FROM --platform=$TARGETPLATFORM node AS build
2+
3+
ARG TARGETOS
4+
ARG TARGETARCH
5+
6+
RUN echo "Building for $TARGETOS/$TARGETARCH"
7+
28
WORKDIR /usr/src/app
39
COPY package.json ./
4-
RUN yarn install
10+
# Suggested fix from https://github.com/nodejs/docker-node/issues/1335 for ARM64
11+
RUN yarn config set network-timeout 300000 && yarn install
512
COPY . .
613
RUN yarn build
714
RUN npm install --global @cyclonedx/cyclonedx-npm
815
RUN cyclonedx-npm --ignore-npm-errors --output-file /bom.json
916

10-
FROM nginxinc/nginx-unprivileged:latest
17+
FROM build AS build-with-tools
1118
USER root
1219
RUN apt-get update; apt-get install -y jq curl
13-
# Download the latest version of udl
14-
RUN curl -s https://api.github.com/repos/mcasperson/UltimateDockerLauncher/releases/latest | \
15-
jq '.assets[] | select(.name|match("udl$")) | .browser_download_url' | \
16-
xargs -I {} curl -L -o /opt/udl {}
20+
21+
FROM build-with-tools AS frontend-amd64
22+
RUN curl -s https://api.github.com/repos/mcasperson/UltimateDockerLauncher/releases/latest | jq -r '.assets[] | select(.name|match("udl$")) | .browser_download_url' | xargs -I {} curl -L -o /opt/udl {}
23+
24+
FROM build-with-tools AS frontend-arm64
25+
RUN curl -s https://api.github.com/repos/mcasperson/UltimateDockerLauncher/releases/latest | jq '.assets[] | select(.name|match("udl_linux_arm64$")) | .browser_download_url' | xargs -I {} curl -L -o /opt/udl {}
26+
27+
FROM frontend-${TARGETARCH} AS final
1728
RUN chmod +x /opt/udl
18-
COPY --from=build /usr/src/app/build /usr/share/nginx/html/
29+
30+
FROM nginxinc/nginx-unprivileged:latest
31+
USER root
32+
33+
COPY --from=final /opt/udl /opt/udl
34+
COPY --from=final /usr/src/app/build /usr/share/nginx/html/
1935
RUN chown -R nginx:nginx /usr/share/nginx/html
2036
COPY --from=build /bom.json /bom.json
2137
USER 101

0 commit comments

Comments
 (0)