From d940aa2169d13c396791535f40ddb5b965b16e8e Mon Sep 17 00:00:00 2001 From: bedroomghost Date: Thu, 17 Apr 2025 21:22:50 +0200 Subject: [PATCH] feat: Added actions to build and upload docker image --- .gitea/workflows/docker-build.yml | 28 ++++++++++++++++++++++++ Dockerfile | 36 +++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 .gitea/workflows/docker-build.yml create mode 100644 Dockerfile diff --git a/.gitea/workflows/docker-build.yml b/.gitea/workflows/docker-build.yml new file mode 100644 index 0000000..1923849 --- /dev/null +++ b/.gitea/workflows/docker-build.yml @@ -0,0 +1,28 @@ +name: Docker Build + +on: push + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Login to Container Registry + run: | + docker login git.ambeles.nl \ + -u ${{ secrets.REGISTRY_USERNAME }} \ + -p ${{ secrets.REGISTRY_PASSWORD }} + + - name: Build Docker Image + run: | + docker build \ + -t git.ambeles.nl/bedroomghost/gpx-viewer:${{ github.sha }} . + + - name: Push Docker Image + run: | + docker tag git.ambeles.nl/bedroomghost/gpx-viewer:${{ github.sha }} git.ambeles.nl/bedroomghost/gpx-viewer:latest + docker push git.ambeles.nl/bedroomghost/gpx-viewer:${{ github.sha }} + docker push git.ambeles.nl/bedroomghost/gpx-viewer:latest + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..dc973ea --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +# Build stage for gpx library +FROM node:20-alpine AS gpx-builder +WORKDIR /app/gpx +COPY gpx/package*.json ./ +RUN npm install +COPY gpx/ ./ +RUN npm run build + +# Build stage for website +FROM node:20-alpine AS website-builder +WORKDIR /app/website +COPY website/package*.json ./ +RUN npm install +COPY website/ ./ +COPY --from=gpx-builder /app/gpx/dist /app/gpx/dist +# RUN npm link /app/gpx + +ENV PUBLIC_MAPBOX_TOKEN="pk" +RUN npm run build + +FROM node:20-alpine +WORKDIR /app +COPY --from=website-builder /app/website/package*.json ./ +COPY --from=website-builder /app/website/build ./build +COPY --from=website-builder /app/website/node_modules ./node_modules +COPY --from=website-builder /app/website/build/index.html ./build/index.html.template + +RUN echo '#!/bin/sh\ncat ./build/index.html.template | sed "s/pk.dummy_token_for_build/$PUBLIC_MAPBOX_TOKEN/g" > ./build/index.html\nexec node build' > ./start.sh && \ + chmod +x ./start.sh + +EXPOSE 3000 + +ENV NODE_ENV=production +ENV PUBLIC_MAPBOX_TOKEN="" + +CMD ["./start.sh"]