Add build and deploy workflow
Build and Deploy / build-deploy (push) Successful in 59s

This commit is contained in:
2026-06-05 15:48:21 +01:00
parent 318ee50b93
commit 8285e118fd
5 changed files with 92 additions and 0 deletions
+4
View File
@@ -0,0 +1,4 @@
.env
.env.*
!.env.example
.git
+47
View File
@@ -0,0 +1,47 @@
name: Build and Deploy
on:
push:
branches: [master]
concurrency:
group: deploy-website
cancel-in-progress: false
jobs:
build-deploy:
runs-on: ubuntu-latest
container:
image: docker:latest
volumes:
- /opt/website:/deploy
steps:
- name: Install dependencies
run: apk add --no-cache git nodejs
- uses: actions/checkout@v4
- name: Copy source to deploy directory
run: |
rm -rf /deploy/build
cp -r . /deploy/build
- name: Create .env file
working-directory: /deploy/build
run: |
cat > .env << 'EOF'
HOST_PORT=${{ vars.HOST_PORT }}
IMMICH_API_URL=${{ vars.IMMICH_API_URL }}
IMMICH_API_KEY=${{ secrets.IMMICH_API_KEY }}
IMMICH_ALBUM_ID=${{ vars.IMMICH_ALBUM_ID }}
DATA_DIR=/opt/website/data
EOF
- name: Build and deploy
working-directory: /deploy/build
run: |
docker compose build
docker compose up -d
- name: Cleanup
run: rm -rf /deploy/build
+25
View File
@@ -0,0 +1,25 @@
FROM oven/bun:1 AS deps
WORKDIR /app
COPY package.json bun.lock ./
RUN bun install --frozen-lockfile
FROM oven/bun:1 AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
ENV NEXT_TELEMETRY_DISABLED=1
RUN bun run build
FROM node:24-slim AS runner
WORKDIR /app
RUN apt-get update \
&& apt-get install -y --no-install-recommends libimage-exiftool-perl \
&& rm -rf /var/lib/apt/lists/*
ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1
ENV PORT=3000
ENV HOSTNAME=0.0.0.0
COPY --from=builder /app/.next/standalone ./
COPY --from=builder /app/.next/static ./.next/static
EXPOSE 3000
CMD ["node", "server.js"]
+15
View File
@@ -0,0 +1,15 @@
name: website
services:
app:
build: .
restart: unless-stopped
ports:
- "${HOST_PORT}:3000"
environment:
IMMICH_API_URL: ${IMMICH_API_URL}
IMMICH_API_KEY: ${IMMICH_API_KEY}
IMMICH_ALBUM_ID: ${IMMICH_ALBUM_ID}
DATA_DIR: /app/data
volumes:
- "${DATA_DIR:-./data}:/app/data"
+1
View File
@@ -1,6 +1,7 @@
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
output: "standalone",
reactCompiler: true,
poweredByHeader: false,
};