Dockerfile (#1)

* Initial work for adding a Dockerfile and creating an image for inspector

Fixes #237

* Updating workflow to publish to GitHub Container Registry

Using guide from https://docs.github.com/en/actions/use-cases-and-examples/publishing-packages/publishing-docker-images
This commit is contained in:
Aaron Powell 2025-04-24 15:28:30 +10:00 • committed by GitHub
commit 890f6fdba2
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 101 additions and 0 deletions

35
.dockerignore Normal file
View file

@ -0,0 +1,35 @@
# Version control
.git
.gitignore
# Node.js
node_modules
npm-debug.log
# Build artifacts
client/dist
client/build
server/dist
server/build
# Environment variables
.env
.env.local
.env.development
.env.test
.env.production
# Editor files
.vscode
.idea
# Logs
logs
*.log
# Testing
coverage
# Docker
Dockerfile
.dockerignore

View file

@ -60,3 +60,43 @@ jobs:
- run: npm run publish-all
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
publish-github-container-registry:
runs-on: ubuntu-latest
if: github.event_name == 'release'
environment: release
needs: build
permissions:
contents: write
id-token: write
steps:
- uses: actions/checkout@v4
- name: Log in to the Container registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata (tags, labels) for Docker
id: meta
uses: docker/metadata-action@v5
with:
images: ghcr.io/${{ github.repository }}
- name: Build and push Docker image
id: push
uses: docker/build-push-action@v6
with:
context: .
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
- name: Generate artifact attestation
uses: actions/attest-build-provenance@v2
with:
subject-name: ghcr.io/${{ github.repository }}
subject-digest: ${{ steps.push.outputs.digest }}
push-to-registry: true

26
Dockerfile Normal file
View file

@ -0,0 +1,26 @@
FROM node:22-slim
# Set working directory
WORKDIR /app
# Copy files
COPY . .
# Install dependencies
# Working around https://github.com/npm/cli/issues/4828
# RUN npm ci
RUN npm install --no-package-lock
# Build the application
RUN npm run build
ENV CLIENT_PORT=6274
ENV SERVER_PORT=6277
# Expose the CLIENT_PORT and SERVER_PORT
EXPOSE $CLIENT_PORT
EXPOSE $SERVER_PORT
# Use ENTRYPOINT with CMD for arguments
ENTRYPOINT ["npm", "start"]
CMD []