From f17bbe7c5a005ff3f0845a9414979549f7f16598 Mon Sep 17 00:00:00 2001 From: Nathan Byrd Date: Sun, 15 Oct 2023 20:17:47 +0000 Subject: [PATCH] Updated docker support --- .github/workflows/docker.yml | 8 ++++---- docker/Dockerfile | 33 +++++++++++++++++++++++---------- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 165fc522..630786ae 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -11,14 +11,14 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx id: buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to DockerHub uses: docker/login-action@v2 @@ -31,5 +31,5 @@ jobs: with: tags: enigmabbs/enigma-bbs:latest file: docker/Dockerfile - platforms: linux/amd64,linux/arm64 + platforms: linux/amd64,linux/arm64,linux/arm/v7 push: true \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index c09b7a5c..a570158f 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,13 +1,20 @@ -FROM node:18-buster-slim +FROM --platform=${BUILDPLATFORM:-linux/amd64} node:20-bookworm-slim + +ARG TARGETPLATFORM +ARG BUILDPLATFORM +ARG TARGETOS +ARG TARGETBRANCH LABEL maintainer="dave@force9.org" ENV NVM_DIR /root/.nvm ENV DEBIAN_FRONTEND noninteractive -COPY . /enigma-bbs -# Do some installing! (and alot of cleaning up) keeping it in one step for less docker layers -# - if you need to debug i recommend to break the steps with individual RUNs) + +# Just copy the package.json so it only needs to build once +COPY package.json /enigma-bbs + +# Install APT and NPM packages RUN apt-get update \ && apt-get install -y \ git \ @@ -22,9 +29,20 @@ RUN apt-get update \ unrar-free \ p7zip-full \ dos2unix \ + && npm set progress=false && npm config set depth 0 \ && npm install -g npm@latest \ && npm install -g pm2 \ - && cd /enigma-bbs && npm install \ + && cd /enigma-bbs && npm install + + +# Do this after npm install to avoid cache-miss on every code change +COPY . /enigma-bbs + +# Then run post source copy steps that have to happen every time +RUN dos2unix /enigma-bbs/docker/bin/docker-entrypoint.sh \ + && apt-get remove dos2unix -y \ + && chmod +x /enigma-bbs/docker/bin/docker-entrypoint.sh \ + && cp -f /enigma-bbs/docker/bin/sexyz /usr/local/bin \ && pm2 start main.js \ && mkdir -p /enigma-bbs-pre/art \ && mkdir /enigma-bbs-pre/mods \ @@ -37,11 +55,6 @@ RUN apt-get update \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \ && apt-get clean -# sexyz -COPY docker/bin/sexyz /usr/local/bin -RUN dos2unix /enigma-bbs/docker/bin/docker-entrypoint.sh && apt-get remove dos2unix -y -RUN chmod +x /enigma-bbs/docker/bin/docker-entrypoint.sh - # enigma storage mounts VOLUME /enigma-bbs/art VOLUME /enigma-bbs/config