Add deployment scaffolding (Dockerfile, docker-compose, nginx)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-02-07 14:14:29 +01:00
parent f3b259ab90
commit d7a54c7b92
6 changed files with 852 additions and 119 deletions

View File

@ -3,6 +3,17 @@ FROM node:18-alpine AS builder
WORKDIR /app
# Accept build args for Next.js public env vars (baked in at build time)
ARG NEXT_PUBLIC_PUSHER_APP_KEY
ARG NEXT_PUBLIC_PUSHER_CLUSTER
ARG NEXT_PUBLIC_SUPABASE_URL
ARG NEXT_PUBLIC_SUPABASE_ANON_KEY
ENV NEXT_PUBLIC_PUSHER_APP_KEY=$NEXT_PUBLIC_PUSHER_APP_KEY
ENV NEXT_PUBLIC_PUSHER_CLUSTER=$NEXT_PUBLIC_PUSHER_CLUSTER
ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL
ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY
COPY package*.json ./
RUN npm ci

View File

@ -0,0 +1,24 @@
---
id: task-1
title: Migrate bored.jeffemmett.com and betting.jeffemmett.com to Netcup hosting
status: Done
assignee: []
created_date: '2025-12-06 17:22'
labels: []
dependencies: []
priority: high
---
## Description
<!-- SECTION:DESCRIPTION:BEGIN -->
Migrate both domains from Firebase/Vercel to self-hosted Docker containers on Netcup RS 8000
Completed:
- Cloned repos from Gitea
- Created Dockerfiles and docker-compose.yml
- Deployed containers with Traefik labels
- Updated Cloudflare tunnel config
- Updated DNS records to point to tunnel
- Pushed changes to Gitea
<!-- SECTION:DESCRIPTION:END -->

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,16 @@
services:
betting-app:
build: .
build:
context: .
args:
- NEXT_PUBLIC_PUSHER_APP_KEY=f3c4d32f8247f83439e8
- NEXT_PUBLIC_PUSHER_CLUSTER=us2
- NEXT_PUBLIC_SUPABASE_URL=https://vzpxtpqpmjmrobsmdxoe.supabase.co
- NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InZ6cHh0cHFwbWptcm9ic21keG9lIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTAzNDc2MjMsImV4cCI6MjA2NTkyMzYyM30.B2Z_0hHbJad9gi0qY2RBGRAGc52NjIBehHxG_7_KnDU
container_name: betting-app-prod
restart: unless-stopped
env_file:
- .env.local
labels:
- "traefik.enable=true"
- "traefik.http.routers.betting-app.rule=Host(`betting.jeffemmett.com`)"

View File

@ -1,9 +0,0 @@
# Pusher Configuration
NEXT_PUBLIC_PUSHER_APP_KEY=f3c4d32f8247f83439e8
NEXT_PUBLIC_PUSHER_CLUSTER=us2
PUSHER_APP_ID=2010598
PUSHER_SECRET=3395fb093b110cec7bf2
# Supabase Configuration
NEXT_PUBLIC_SUPABASE_URL=https://vzpxtpqpmjmrobsmdxoe.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InZ6cHh0cHFwbWptcm9ic21keG9lIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NTAzNDc2MjMsImV4cCI6MjA2NTkyMzYyM30.B2Z_0hHbJad9gi0qY2RBGRAGc52NjIBehHxG_7_KnDU

View File

@ -22,7 +22,7 @@ export default function Home() {
<title>Commons Hub Chess Tournament</title>
<meta name="description" content="Official Mycelial-Betting Network for Chess Tournaments" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="icon" href="/favicon.ico" />
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🎲</text></svg>" />
</Head>
<ChessApp />
</>