diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8bb1d57..1343ac6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -111,23 +111,18 @@ jobs: # Pull latest image docker pull ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest - # Update docker-compose to use new image - sed -i 's|build:|#build:|g' docker-compose.yml - sed -i 's|context: .|#context: .|g' docker-compose.yml - sed -i 's|dockerfile: Dockerfile|#dockerfile: Dockerfile|g' docker-compose.yml - # Remove any existing image lines and add new one - sed -i '/quixotic-app:/,/container_name:/{/image:/d}' docker-compose.yml - sed -i '/quixotic-app:/a \ \ \ \ image: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest' docker-compose.yml + # Set environment variables for production deployment + echo "APP_IMAGE=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest" >> .env.docker - # Deploy with zero downtime - docker-compose --env-file .env.docker pull + # Deploy with zero downtime using production override + docker-compose -f docker-compose.yml -f docker-compose.prod.yml --env-file .env.docker pull # Stop existing containers if they exist - if docker-compose --env-file .env.docker ps -q | grep -q .; then - docker-compose --env-file .env.docker down --remove-orphans + if docker-compose -f docker-compose.yml -f docker-compose.prod.yml --env-file .env.docker ps -q | grep -q .; then + docker-compose -f docker-compose.yml -f docker-compose.prod.yml --env-file .env.docker down --remove-orphans fi - docker-compose --env-file .env.docker up -d + docker-compose -f docker-compose.yml -f docker-compose.prod.yml --env-file .env.docker up -d # Cleanup old images docker image prune -f \ No newline at end of file diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml new file mode 100644 index 0000000..c7ff262 --- /dev/null +++ b/docker-compose.prod.yml @@ -0,0 +1,4 @@ +services: + quixotic-app: + build: null + image: ${APP_IMAGE}