Add development and production Docker Compose files; update deployment scripts to use new file names
All checks were successful
Deploy Production (admin.merchbay.app) / deploy (push) Successful in 2m43s

This commit is contained in:
Frank John Begornia
2025-12-21 04:56:21 +08:00
parent cc882ea6fc
commit 4ce000e95b
4 changed files with 98 additions and 6 deletions

View File

@@ -51,7 +51,7 @@ jobs:
run: |
scp -i ~/.ssh/id_ed25519 \
/workspace/repo/merchbay_admin_dev.tar.gz \
/workspace/repo/docker-compose.yml \
/workspace/repo/docker-compose.dev.yml \
${DEPLOY_USER}@${DEPLOY_HOST}:/tmp/
# 5⃣ Deploy on server
@@ -75,7 +75,7 @@ jobs:
docker images | grep merchbay_admin | grep -v "$(docker images merchbay_admin:dev -q)" | awk '{print $3}' | xargs -r docker rmi -f || true
echo "📄 Updating compose file"
cp /tmp/docker-compose.yml "$DEPLOY_DIR/"
cp /tmp/docker-compose.dev.yml "$DEPLOY_DIR/docker-compose.yml"
cd "$DEPLOY_DIR"
@@ -114,7 +114,7 @@ jobs:
fi
echo "🧹 Cleanup"
rm -f /tmp/merchbay_admin_dev.tar.gz /tmp/docker-compose.yml
rm -f /tmp/merchbay_admin_dev.tar.gz /tmp/docker-compose.dev.yml
echo "🧹 Aggressive Docker cleanup to reclaim space"
docker image prune -af --filter "until=24h" || true

View File

@@ -52,7 +52,7 @@ jobs:
run: |
scp -i ~/.ssh/id_ed25519 \
/workspace/repo/merchbay_admin.tar.gz \
/workspace/repo/docker-compose.yml \
/workspace/repo/docker-compose.prod.yml \
${DEPLOY_USER}@${DEPLOY_HOST}:/tmp/
# 5⃣ Deploy on server
@@ -77,7 +77,7 @@ jobs:
docker images | grep merchbay_admin | grep -v "$(docker images merchbay_admin:latest -q)" | awk '{print $3}' | xargs -r docker rmi -f || true
echo "📄 Updating compose file"
cp /tmp/docker-compose.yml "$DEPLOY_DIR/"
cp /tmp/docker-compose.prod.yml "$DEPLOY_DIR/docker-compose.yml"
cd "$DEPLOY_DIR"
@@ -120,7 +120,7 @@ jobs:
fi
echo "🧹 Cleanup"
rm -f /tmp/merchbay_admin.tar.gz /tmp/docker-compose.yml
rm -f /tmp/merchbay_admin.tar.gz /tmp/docker-compose.prod.yml
echo "🧹 Aggressive Docker cleanup to reclaim space"
docker image prune -af --filter "until=24h" || true
@@ -130,6 +130,8 @@ jobs:
echo "📊 Docker space usage:"
docker system df
rm -f /tmp/merchbay_admin.tar.gz /tmp/docker-compose.prod.yml
echo "✅ Production deployment completed!"
echo "🌐 Application available at: https://admin.merchbay.app"
EOF

45
docker-compose.dev.yml Normal file
View File

@@ -0,0 +1,45 @@
services:
app:
image: merchbay_admin:dev
container_name: merchbay_admin_app
restart: unless-stopped
environment:
- APP_ENV=${APP_ENV:-development}
- APP_DEBUG=${APP_DEBUG:-true}
- APP_URL=${APP_URL:-https://dev-admin.merchbay.app}
- DB_CONNECTION=mysql
- DB_HOST=${DB_HOST}
- DB_PORT=${DB_PORT:-3306}
- DB_DATABASE=${DB_DATABASE}
- DB_USERNAME=${DB_USERNAME}
- DB_PASSWORD=${DB_PASSWORD}
- IMAGES_DIRECTORY=${IMAGES_DIRECTORY}
- PRODUCTION_PRIVATE_SERVER=${PRODUCTION_PRIVATE_SERVER}
volumes:
- ./storage:/var/www/html/storage
- ./public/uploads:/var/www/html/public/uploads
labels:
- "traefik.enable=true"
# Development environment (dev-admin.merchbay.app)
- "traefik.http.routers.merchbay-admin-dev.rule=Host(`dev-admin.merchbay.app`)"
- "traefik.http.routers.merchbay-admin-dev.entrypoints=websecure"
- "traefik.http.routers.merchbay-admin-dev.tls=true"
- "traefik.http.routers.merchbay-admin-dev.tls.certresolver=letsencrypt"
- "traefik.http.services.merchbay-admin-dev.loadbalancer.server.port=80"
# HTTP to HTTPS redirect
- "traefik.http.routers.merchbay-admin-dev-http.rule=Host(`dev-admin.merchbay.app`)"
- "traefik.http.routers.merchbay-admin-dev-http.entrypoints=web"
- "traefik.http.routers.merchbay-admin-dev-http.middlewares=https-redirect"
- "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https"
networks:
- traefik-public
- crew-app-net
- default
networks:
traefik-public:
external: true
crew-app-net:
external: true
default:
driver: bridge

45
docker-compose.prod.yml Normal file
View File

@@ -0,0 +1,45 @@
services:
app:
image: merchbay_admin:latest
container_name: merchbay_admin_app
restart: unless-stopped
environment:
- APP_ENV=${APP_ENV:-production}
- APP_DEBUG=${APP_DEBUG:-false}
- APP_URL=${APP_URL:-https://merchbay.app}
- DB_CONNECTION=mysql
- DB_HOST=${DB_HOST}
- DB_PORT=${DB_PORT:-3306}
- DB_DATABASE=${DB_DATABASE}
- DB_USERNAME=${DB_USERNAME}
- DB_PASSWORD=${DB_PASSWORD}
- IMAGES_DIRECTORY=${IMAGES_DIRECTORY}
- PRODUCTION_PRIVATE_SERVER=${PRODUCTION_PRIVATE_SERVER}
volumes:
- ./storage:/var/www/html/storage
- ./public/uploads:/var/www/html/public/uploads
labels:
- "traefik.enable=true"
# Production environment (merchbay.app)
- "traefik.http.routers.merchbay-admin-dev.rule=Host(`merchbay.app`)"
- "traefik.http.routers.merchbay-admin-dev.entrypoints=websecure"
- "traefik.http.routers.merchbay-admin-dev.tls=true"
- "traefik.http.routers.merchbay-admin-dev.tls.certresolver=le"
- "traefik.http.services.merchbay-admin-dev.loadbalancer.server.port=80"
# HTTP to HTTPS redirect
- "traefik.http.routers.merchbay-admin-dev-http.rule=Host(`merchbay.app`)"
- "traefik.http.routers.merchbay-admin-dev-http.entrypoints=web"
- "traefik.http.routers.merchbay-admin-dev-http.middlewares=https-redirect"
- "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https"
networks:
- traefik-public
- crew-app-net
- default
networks:
traefik-public:
external: true
crew-app-net:
external: true
default:
driver: bridge