diff --git a/.gitea/workflows/deploy-dev.yml b/.gitea/workflows/deploy-dev.yml index 681ec28..48917ae 100644 --- a/.gitea/workflows/deploy-dev.yml +++ b/.gitea/workflows/deploy-dev.yml @@ -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 diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 1d422a2..14ac508 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -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 @@ -129,6 +129,8 @@ jobs: docker builder prune -af --filter "until=48h" || true 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" diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml new file mode 100644 index 0000000..7ede116 --- /dev/null +++ b/docker-compose.dev.yml @@ -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 diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..2db491c --- /dev/null +++ b/docker-compose.prod.yml @@ -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