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
All checks were successful
Deploy Production (admin.merchbay.app) / deploy (push) Successful in 2m43s
This commit is contained in:
@@ -51,7 +51,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
scp -i ~/.ssh/id_ed25519 \
|
scp -i ~/.ssh/id_ed25519 \
|
||||||
/workspace/repo/merchbay_admin_dev.tar.gz \
|
/workspace/repo/merchbay_admin_dev.tar.gz \
|
||||||
/workspace/repo/docker-compose.yml \
|
/workspace/repo/docker-compose.dev.yml \
|
||||||
${DEPLOY_USER}@${DEPLOY_HOST}:/tmp/
|
${DEPLOY_USER}@${DEPLOY_HOST}:/tmp/
|
||||||
|
|
||||||
# 5️⃣ Deploy on server
|
# 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
|
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"
|
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"
|
cd "$DEPLOY_DIR"
|
||||||
|
|
||||||
@@ -114,7 +114,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "🧹 Cleanup"
|
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"
|
echo "🧹 Aggressive Docker cleanup to reclaim space"
|
||||||
docker image prune -af --filter "until=24h" || true
|
docker image prune -af --filter "until=24h" || true
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
scp -i ~/.ssh/id_ed25519 \
|
scp -i ~/.ssh/id_ed25519 \
|
||||||
/workspace/repo/merchbay_admin.tar.gz \
|
/workspace/repo/merchbay_admin.tar.gz \
|
||||||
/workspace/repo/docker-compose.yml \
|
/workspace/repo/docker-compose.prod.yml \
|
||||||
${DEPLOY_USER}@${DEPLOY_HOST}:/tmp/
|
${DEPLOY_USER}@${DEPLOY_HOST}:/tmp/
|
||||||
|
|
||||||
# 5️⃣ Deploy on server
|
# 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
|
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"
|
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"
|
cd "$DEPLOY_DIR"
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "🧹 Cleanup"
|
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"
|
echo "🧹 Aggressive Docker cleanup to reclaim space"
|
||||||
docker image prune -af --filter "until=24h" || true
|
docker image prune -af --filter "until=24h" || true
|
||||||
@@ -130,6 +130,8 @@ jobs:
|
|||||||
echo "📊 Docker space usage:"
|
echo "📊 Docker space usage:"
|
||||||
docker system df
|
docker system df
|
||||||
|
|
||||||
|
rm -f /tmp/merchbay_admin.tar.gz /tmp/docker-compose.prod.yml
|
||||||
|
|
||||||
echo "✅ Production deployment completed!"
|
echo "✅ Production deployment completed!"
|
||||||
echo "🌐 Application available at: https://admin.merchbay.app"
|
echo "🌐 Application available at: https://admin.merchbay.app"
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
45
docker-compose.dev.yml
Normal file
45
docker-compose.dev.yml
Normal 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
45
docker-compose.prod.yml
Normal 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
|
||||||
Reference in New Issue
Block a user