Add initial Docker setup with .dockerignore, Dockerfile, and entrypoint script
Some checks failed
Building and publishing Homebrewery as Docker Image / build (release) Failing after 2m10s
Some checks failed
Building and publishing Homebrewery as Docker Image / build (release) Failing after 2m10s
This commit is contained in:
parent
f99a428d67
commit
147397c4d3
10
.dockerignore
Normal file
10
.dockerignore
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
.git
|
||||||
|
node_modules
|
||||||
|
Dockerfile
|
||||||
|
README.md
|
||||||
|
*.log
|
||||||
|
homebrewery/config/*
|
||||||
|
homebrewery/.dockerignore
|
||||||
|
homebrewery/Dockerfile
|
||||||
|
homebrewery/.git
|
||||||
|
homebrewery/node_modules
|
45
.gitea/workflows/build.yaml
Normal file
45
.gitea/workflows/build.yaml
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
name: Building and publishing Homebrewery as Docker Image
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [published]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
env:
|
||||||
|
TAG_NAME: ${{ github.event.release.tag_name }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
github-server-url: https://github.com
|
||||||
|
repository: naturalcrit/homebrewery.git
|
||||||
|
ref: ${{ github.event.release.tag_name }}
|
||||||
|
token: ""
|
||||||
|
path: homebrewery
|
||||||
|
|
||||||
|
- name: Login to GitHub Container Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: git.morlana.online
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.DOCKER_TOKEN }}
|
||||||
|
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
git.morlana.online/${{ github.repository_owner }}/homebrewery:latest
|
||||||
|
git.morlana.online/${{ github.repository_owner }}/homebrewery:${{ github.event.release.tag_name }}
|
42
Dockerfile
Normal file
42
Dockerfile
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
# Base Stage for NodeJS
|
||||||
|
FROM node:22-alpine as base
|
||||||
|
|
||||||
|
ENV NODE_ENV=docker
|
||||||
|
WORKDIR /usr/src/app
|
||||||
|
|
||||||
|
# Installing dependencies with use of package-lock.json
|
||||||
|
FROM base as deps
|
||||||
|
|
||||||
|
RUN apk --no-cache add git
|
||||||
|
COPY homebrewery/package.json homebrewery/package-lock.json ./
|
||||||
|
RUN npm ci --ignore-scripts
|
||||||
|
|
||||||
|
# Build Stage
|
||||||
|
FROM base as builder
|
||||||
|
|
||||||
|
COPY --from=deps /usr/src/app/node_modules ./node_modules
|
||||||
|
COPY homebrewery/ ./
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
FROM base as runner
|
||||||
|
|
||||||
|
# Defining env variables for homebrewery
|
||||||
|
ENV HB_HOST=homebrewery.local.naturalcrit.com:8000 HB_NATURALCRIT_URL=local.naturalcrit.com:8010 HB_SECRET=secret PORT=8000 HB_ENABLE_V3=true HB_ENABLE_THEMES=true HB_LOCAL_ENVIRONMENTS=docker,local HB_PUBLIC_URL=https://homebrewery.naturalcrit.com
|
||||||
|
ENV HB_IMAGES=null HB_FONTS=null
|
||||||
|
|
||||||
|
# Adding tini for clean signal handling
|
||||||
|
ENV TINI_VERSION v0.19.0
|
||||||
|
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
|
||||||
|
RUN chmod +x /tini
|
||||||
|
|
||||||
|
# Adding Entrypoint
|
||||||
|
COPY entrypoint.sh /entrypoint.sh
|
||||||
|
RUN chmod +x /entrypoint.sh
|
||||||
|
|
||||||
|
# Adding executables
|
||||||
|
COPY --from=deps /usr/src/app/node_modules ./node_modules
|
||||||
|
COPY --from=deps /usr/src/app/build ./build
|
||||||
|
COPY homebrewery/ ./
|
||||||
|
|
||||||
|
EXPOSE 8000
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
35
entrypoint.sh
Normal file
35
entrypoint.sh
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
CONFIG_FILE="/usr/src/app/config/docker.json"
|
||||||
|
|
||||||
|
# Falls Verzeichnis noch nicht existiert
|
||||||
|
mkdir -p /usr/src/app/config
|
||||||
|
|
||||||
|
# Falls docker.json noch nicht existiert
|
||||||
|
if [ ! -f "$CONFIG_FILE" ]; then
|
||||||
|
echo "Creating docker.json from environment..."
|
||||||
|
|
||||||
|
cat > "$CONFIG_FILE" <<EOF
|
||||||
|
{
|
||||||
|
"host": "${HB_HOST}",
|
||||||
|
"port": ${PORT},
|
||||||
|
"naturalCritURL": "${HB_NATURALCRIT_URL}",
|
||||||
|
"secret": "${HB_SECRET}",
|
||||||
|
"enableV3": ${HB_ENABLE_V3:-false},
|
||||||
|
"enableThemes": ${HB_ENABLE_THEMES:-false},
|
||||||
|
"localEnvironments": "${HB_LOCAL_ENVIRONMENTS}",
|
||||||
|
"publicUrl": "${HB_PUBLIC_URL}",
|
||||||
|
"images": ${HB_IMAGES:-null},
|
||||||
|
"fonts": ${HB_FONTS:-null}
|
||||||
|
}
|
||||||
|
EOF
|
||||||
|
|
||||||
|
else
|
||||||
|
echo "docker.json already exists, skipping creation."
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Start Homebrewery
|
||||||
|
echo "Starting Homebrewery..."
|
||||||
|
exec /tini -s -g -- node --experimental-require-module "$@" server.js
|
Loading…
x
Reference in New Issue
Block a user