feat(deploy): add Docker build and deployment configuration

- Add Dockerfile based on jitsi/web with custom web client
- Add docker-compose.yml for local testing
- Add deploy.sh script for automated builds and deployment
- Add .dockerignore to optimize Docker builds

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Jeff Emmett 2026-01-29 11:26:30 +00:00
parent 237f2c5cdf
commit b6fc0ae0b5
4 changed files with 116 additions and 0 deletions

29
.dockerignore Normal file
View File

@ -0,0 +1,29 @@
# Build artifacts
build/
node_modules/
# Git
.git/
.github/
# IDE
.idea/
.vscode/
*.swp
*.swo
# Mobile
android/
ios/
# Tests
tests/
# Documentation
docs/
*.md
!README.md
# Development files
.devcontainer/
*.log

22
Dockerfile Normal file
View File

@ -0,0 +1,22 @@
# Jeffsi Meet - Custom Jitsi Web Image
# Based on jitsi/web with custom web client code
FROM jitsi/web:stable
# Copy our custom built files
COPY libs/ /usr/share/jitsi-meet/libs/
COPY css/all.css /usr/share/jitsi-meet/css/all.css
COPY lang/ /usr/share/jitsi-meet/lang/
COPY images/ /usr/share/jitsi-meet/images/
COPY sounds/ /usr/share/jitsi-meet/sounds/
COPY fonts/ /usr/share/jitsi-meet/fonts/
COPY static/ /usr/share/jitsi-meet/static/
COPY resources/ /usr/share/jitsi-meet/resources/
# Copy HTML files
COPY *.html /usr/share/jitsi-meet/
COPY *.js /usr/share/jitsi-meet/
# Copy config templates
COPY config.js /defaults/config.js
COPY interface_config.js /defaults/interface_config.js

49
deploy.sh Executable file
View File

@ -0,0 +1,49 @@
#!/bin/bash
# Deploy Jeffsi Meet to Netcup server
set -e
IMAGE_NAME="jeffsi-meet-web"
IMAGE_TAG="latest"
REMOTE_HOST="netcup"
REMOTE_DIR="/opt/jeffsi-meet"
echo "=== Building Jeffsi Meet ==="
# Build the web client
echo "Building web client..."
make all
# Build Docker image
echo "Building Docker image..."
docker build -t ${IMAGE_NAME}:${IMAGE_TAG} .
# Save image to tar
echo "Saving Docker image..."
docker save ${IMAGE_NAME}:${IMAGE_TAG} | gzip > /tmp/jeffsi-meet-web.tar.gz
# Copy to server
echo "Copying image to server..."
scp /tmp/jeffsi-meet-web.tar.gz ${REMOTE_HOST}:/tmp/
# Load image on server and restart
echo "Loading image on server and restarting..."
ssh ${REMOTE_HOST} << 'EOF'
cd /opt/jeffsi-meet
# Load the new image
docker load < /tmp/jeffsi-meet-web.tar.gz
# Restart the web container with the new image
docker compose -f docker-compose.jeffsi.yml up -d --force-recreate web
# Clean up
rm /tmp/jeffsi-meet-web.tar.gz
echo "Deployment complete!"
docker ps | grep jeffsi
EOF
# Clean up local tar
rm /tmp/jeffsi-meet-web.tar.gz
echo "=== Deployment finished ==="

16
docker-compose.yml Normal file
View File

@ -0,0 +1,16 @@
# Jeffsi Meet - Docker Compose for building custom web image
# This builds the custom web image locally for testing
version: '3.8'
services:
web:
build:
context: .
dockerfile: Dockerfile
image: jeffsi-meet-web:latest
ports:
- "8080:80"
environment:
- PUBLIC_URL=http://localhost:8080
- DISABLE_HTTPS=1