Merge pull request #314 from TriliumNext/fix-arm-builds

Fix ARM container builds
This commit is contained in:
Elian Doran 2024-08-09 01:06:32 +03:00 committed by GitHub
commit 50a6a1f3dc
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 161 additions and 143 deletions

View File

@ -16,7 +16,7 @@ env:
DOCKERHUB_REGISTRY: docker.io DOCKERHUB_REGISTRY: docker.io
IMAGE_NAME: ${{ github.repository }} IMAGE_NAME: ${{ github.repository }}
TEST_TAG: triliumnext/notes:test TEST_TAG: triliumnext/notes:test
PLATFORMS: linux/amd64,linux/arm64 PLATFORMS: linux/amd64,linux/arm64,linux/arm/v7,linux/arm64/v8
jobs: jobs:
test_docker: test_docker:
@ -73,21 +73,29 @@ jobs:
packages: write packages: write
attestations: write attestations: write
id-token: write id-token: write
strategy:
matrix:
architecture: [linux/amd64, linux/arm64, linux/arm/v7, linux/arm64/v8]
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Extract metadata (tags, labels) for GHCR image - name: Extract metadata (tags, labels) for GHCR image
id: ghcr-meta id: ghcr-meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 uses: docker/metadata-action@v4
with: with:
images: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }} images: ${{ env.GHCR_REGISTRY }}/${{ env.IMAGE_NAME }}
tags: tags: |
type=ref,event=branch
type=ref,event=tag
type=sha
- name: Extract metadata (tags, labels) for DockerHub image - name: Extract metadata (tags, labels) for DockerHub image
id: dh-meta id: dh-meta
uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 uses: docker/metadata-action@v4
with: with:
images: ${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }} images: ${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME }}
tags: |
type=ref,event=branch
type=ref,event=tag
type=sha
- name: Set up node & dependencies - name: Set up node & dependencies
uses: actions/setup-node@v4 uses: actions/setup-node@v4
with: with:
@ -99,7 +107,7 @@ jobs:
- name: Create server-package.json - name: Create server-package.json
run: cat package.json | grep -v electron > server-package.json run: cat package.json | grep -v electron > server-package.json
- name: Log in to the GHCR container registry - name: Log in to the GHCR container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 uses: docker/login-action@v2
with: with:
registry: ${{ env.GHCR_REGISTRY }} registry: ${{ env.GHCR_REGISTRY }}
username: ${{ github.actor }} username: ${{ github.actor }}
@ -110,7 +118,7 @@ jobs:
id: ghcr-push id: ghcr-push
with: with:
context: . context: .
platforms: ${{ env.PLATFORMS }} platforms: ${{ matrix.architecture }}
push: true push: true
tags: ${{ steps.ghcr-meta.outputs.tags }} tags: ${{ steps.ghcr-meta.outputs.tags }}
labels: ${{ steps.ghcr-meta.outputs.labels }} labels: ${{ steps.ghcr-meta.outputs.labels }}
@ -123,7 +131,7 @@ jobs:
subject-digest: ${{ steps.ghcr-push.outputs.digest }} subject-digest: ${{ steps.ghcr-push.outputs.digest }}
push-to-registry: true push-to-registry: true
- name: Log in to the DockerHub container registry - name: Log in to the DockerHub container registry
uses: docker/login-action@65b78e6e13532edd9afa3aa52ac7964289d1a9c1 uses: docker/login-action@v2
with: with:
registry: ${{ env.DOCKERHUB_REGISTRY }} registry: ${{ env.DOCKERHUB_REGISTRY }}
username: ${{ secrets.DOCKERHUB_USERNAME }} username: ${{ secrets.DOCKERHUB_USERNAME }}
@ -133,7 +141,7 @@ jobs:
id: dh-push id: dh-push
with: with:
context: . context: .
platforms: ${{ env.PLATFORMS }} platforms: ${{ matrix.architecture }}
push: true push: true
tags: ${{ steps.dh-meta.outputs.tags }} tags: ${{ steps.dh-meta.outputs.tags }}
labels: ${{ steps.dh-meta.outputs.labels }} labels: ${{ steps.dh-meta.outputs.labels }}
@ -145,4 +153,3 @@ jobs:
subject-name: ${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME}} subject-name: ${{ env.DOCKERHUB_REGISTRY }}/${{ env.IMAGE_NAME}}
subject-digest: ${{ steps.dh-push.outputs.digest }} subject-digest: ${{ steps.dh-push.outputs.digest }}
push-to-registry: true push-to-registry: true

View File

@ -1,8 +1,8 @@
# !!! Don't try to build this Dockerfile directly, run it through bin/build-docker.sh script !!! # !!! Don't try to build this Dockerfile directly, run it through bin/build-docker.sh script !!!
FROM node:20.15.1-alpine FROM node:20.15.1-bullseye-slim
# Configure system dependencies # Configure system dependencies
RUN apk add --no-cache --virtual .build-dependencies \ RUN apt-get update && apt-get install -y --no-install-recommends \
autoconf \ autoconf \
automake \ automake \
g++ \ g++ \
@ -11,7 +11,9 @@ RUN apk add --no-cache --virtual .build-dependencies \
make \ make \
nasm \ nasm \
libpng-dev \ libpng-dev \
python3 python3 \
gosu \
&& rm -rf /var/lib/apt/lists/*
# Create app directory # Create app directory
WORKDIR /usr/src/app WORKDIR /usr/src/app
@ -32,24 +34,33 @@ RUN rm docker_healthcheck.ts
RUN rm -r build RUN rm -r build
# Install app dependencies # Install app dependencies
RUN set -x \ RUN set -x
&& npm install \ RUN npm install
&& apk del .build-dependencies \ RUN apt-get purge -y --auto-remove \
&& npm run webpack \ autoconf \
&& npm prune --omit=dev \ automake \
&& cp src/public/app/share.js src/public/app-dist/. \ g++ \
&& cp -r src/public/app/doc_notes src/public/app-dist/. \ gcc \
&& rm -rf src/public/app \ libtool \
&& rm src/services/asset_path.ts make \
nasm \
libpng-dev \
python3 \
&& rm -rf /var/lib/apt/lists/*
RUN npm run webpack
RUN npm prune --omit=dev
RUN cp src/public/app/share.js src/public/app-dist/.
RUN cp -r src/public/app/doc_notes src/public/app-dist/.
RUN rm -rf src/public/app
RUN rm src/services/asset_path.ts
# Some setup tools need to be kept # Some setup tools need to be kept
RUN apk add --no-cache su-exec shadow RUN apt-get update && apt-get install -y --no-install-recommends \
gosu \
# Add application user and setup proper volume permissions && rm -rf /var/lib/apt/lists/*
RUN adduser -s /bin/false node; exit 0
# Start the application # Start the application
EXPOSE 8080 EXPOSE 8080
CMD [ "./start-docker.sh" ] CMD [ "./start-docker.sh" ]
HEALTHCHECK --start-period=10s CMD exec su-exec node node docker_healthcheck.js HEALTHCHECK --start-period=10s CMD exec gosu node node docker_healthcheck.js

View File

@ -4,4 +4,4 @@
[[ ! -z "${USER_GID}" ]] && groupmod -og ${USER_GID} node || echo "No USER_GID specified, leaving 1000" [[ ! -z "${USER_GID}" ]] && groupmod -og ${USER_GID} node || echo "No USER_GID specified, leaving 1000"
chown -R node:node /home/node chown -R node:node /home/node
exec su-exec node node ./src/www exec gosu node node ./src/www