5.0 KiB
Marketing Site Container Deployment Guide
✅ Implementation Complete
The marketing site is now containerized and running! This document explains the new setup and how to use it.
🏗️ Architecture
Before (Manual)
- Marketing files in
/var/www/igny8-marketing/ - Manual build → copy → restart process
- No version control for deployments
After (Containerized) ✅
- Marketing site runs in
igny8_marketingcontainer - Automated builds and deployments
- Version controlled with Docker images
- Easy rollback capability
📦 New Components
1. Dockerfile.marketing
Location: /data/app/igny8/frontend/Dockerfile.marketing
Builds the marketing site and serves it with Caddy.
2. Caddyfile.marketing
Location: /data/app/igny8/frontend/Caddyfile.marketing
Caddy configuration for the marketing container (port 8020).
3. igny8_marketing Service
Location: docker-compose.app.yml
New container service for the marketing site.
4. Updated Main Caddyfile
Location: /var/lib/docker/volumes/portainer_data/_data/caddy/Caddyfile
Now routes igny8.com to igny8_marketing:8020 container instead of static files.
🚀 Deployment Process
Initial Setup (One-time)
-
Build the marketing image:
cd /data/app/igny8/frontend docker build -t igny8-marketing:latest -f Dockerfile.marketing . -
Start the marketing container:
cd /data/app/igny8 docker compose -f docker-compose.app.yml -p igny8-app up -d igny8_marketing -
Reload Caddy:
cd /data/app docker compose restart caddy
Updating Marketing Site
New Process (Automated):
# 1. Rebuild the marketing image
cd /data/app/igny8/frontend
docker build -t igny8-marketing:latest -f Dockerfile.marketing .
# 2. Restart the container (picks up new image)
cd /data/app/igny8
docker compose -f docker-compose.app.yml -p igny8-app restart igny8_marketing
Old Process (Manual - No Longer Needed):
# ❌ OLD WAY - Don't use anymore
npm run build:marketing
sudo cp -r dist/* /var/www/igny8-marketing/
docker compose restart caddy
🔄 Rollback Process
If you need to rollback to a previous version:
# 1. Tag the current image as backup
docker tag igny8-marketing:latest igny8-marketing:backup-$(date +%Y%m%d)
# 2. Tag a previous image as latest (if you have it)
docker tag igny8-marketing:previous-version igny8-marketing:latest
# 3. Restart container
docker compose -f docker-compose.app.yml -p igny8-app restart igny8_marketing
📊 Container Status
Check Marketing Container
docker ps --filter "name=igny8_marketing"
View Marketing Logs
docker logs igny8_marketing
docker logs igny8_marketing --tail 50 -f # Follow logs
Test Marketing Site
# Test direct container access
curl http://localhost:8022/marketing.html
# Test through Caddy (production)
curl https://igny8.com/marketing.html
🔍 Troubleshooting
Container Not Starting
# Check logs
docker logs igny8_marketing
# Check if image exists
docker images | grep igny8-marketing
# Rebuild if needed
cd /data/app/igny8/frontend
docker build -t igny8-marketing:latest -f Dockerfile.marketing .
Caddy Not Routing Correctly
# Check Caddy logs
docker logs igny8_caddy
# Verify Caddyfile
cat /var/lib/docker/volumes/portainer_data/_data/caddy/Caddyfile
# Reload Caddy
cd /data/app
docker compose restart caddy
Network Issues
# Verify containers are on same network
docker network inspect igny8_net | grep -A 5 igny8_marketing
docker network inspect igny8_net | grep -A 5 igny8_caddy
📝 File Locations
| Component | Location |
|---|---|
| Dockerfile.marketing | /data/app/igny8/frontend/Dockerfile.marketing |
| Caddyfile.marketing | /data/app/igny8/frontend/Caddyfile.marketing |
| docker-compose.app.yml | /data/app/igny8/docker-compose.app.yml |
| Main Caddyfile | /var/lib/docker/volumes/portainer_data/_data/caddy/Caddyfile |
| Marketing Image | Docker: igny8-marketing:latest |
| Container Name | igny8_marketing |
| Container Port | 8020 (internal), 8022 (external) |
✅ Benefits
- Automated Deployments - No more manual file copying
- Version Control - Each deployment is a Docker image
- Easy Rollback - Quick container image rollback
- Isolation - Marketing site isolated in its own container
- Reproducible - Same build process every time
- CI/CD Ready - Can be fully automated
🎯 Current Status
✅ Marketing container is running
✅ Caddy routing is configured
✅ Site is accessible at https://igny8.com
✅ Direct container access at http://localhost:8022
📚 Related Documentation
- Deployment Architecture Analysis
- Docker Compose:
/data/app/igny8/docker-compose.app.yml - Main Caddyfile:
/var/lib/docker/volumes/portainer_data/_data/caddy/Caddyfile