diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 84194f7..247b569 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -44,70 +44,37 @@ jobs: key: ${{ secrets.SSH_PRIVATE_KEY }} port: ${{ secrets.SSH_PORT }} script: | - # Navigate to deployment directory - cd ${{ secrets.DEPLOY_PATH }} - - # Create .env file with all secrets - cat > .env << 'EOF' - # Deployment - REGISTRY_URL=${{ vars.REGISTRY_URL }} - NAMESPACE=${{ vars.NAMESPACE }} - REPO_NAME=${{ vars.REPO_NAME }} - IMAGE_TAG=${{ github.sha }} - CI_GITEA_USER=${{ secrets.CI_GITEA_USER }} - CI_GITEA_TOKEN=${{ secrets.CI_GITEA_TOKEN }} - - # Application - APP_PORT=${{ secrets.APP_PORT }} - SPRING_PROFILES_ACTIVE=${{ secrets.SPRING_PROFILES_ACTIVE }} - APPLICATION_NAME=${{ secrets.APPLICATION_NAME }} - CORS_ALLOWED_ORIGINS=${{ secrets.CORS_ALLOWED_ORIGINS }} - - # PostgreSQL Configuration - POSTGRES_HOST=${{ secrets.POSTGRES_HOST }} - POSTGRES_PORT=${{ secrets.POSTGRES_PORT }} - POSTGRES_DB=${{ secrets.POSTGRES_DB }} - POSTGRES_USER=${{ secrets.POSTGRES_USER }} - POSTGRES_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} - - # Keycloak Configuration - KEYCLOAK_URL=${{ secrets.KEYCLOAK_URL }} - KEYCLOAK_REALM=${{ secrets.KEYCLOAK_REALM }} - KEYCLOAK_ISSUER_URI=${{ secrets.KEYCLOAK_ISSUER_URI }} - - # MinIO (S3) Configuration - MINIO_ENDPOINT=${{ secrets.MINIO_ENDPOINT }} - MINIO_ACCESS_KEY=${{ secrets.MINIO_ACCESS_KEY }} - MINIO_SECRET_KEY=${{ secrets.MINIO_SECRET_KEY }} - - # AWS S3 Configuration (if needed) - AWS_ACCESS_KEY_ID=${{ secrets.AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY=${{ secrets.AWS_SECRET_ACCESS_KEY }} - AWS_S3_BUCKET_NAME=${{ secrets.AWS_S3_BUCKET_NAME }} - AWS_S3_REGION=${{ secrets.AWS_S3_REGION }} - AWS_S3_ENDPOINT=${{ secrets.AWS_S3_ENDPOINT }} - - # Hibernate Configuration - HIBERNATE_DDL_AUTO=${{ secrets.HIBERNATE_DDL_AUTO }} - - # Java Options - JAVA_OPTS=${{ secrets.JAVA_OPTS }} - EOF - - # Set proper permissions - chmod 600 .env - # Login to Container Registry echo "${{ secrets.CI_GITEA_TOKEN }}" | docker login ${{ vars.REGISTRY_URL }} -u ${{ secrets.CI_GITEA_USER }} --password-stdin - # Pull latest image - docker compose pull + # Pull new image + docker pull ${{ vars.REGISTRY_URL }}/${{ vars.NAMESPACE }}/${{ vars.REPO_NAME }}:${{ github.sha }} - # Restart services with new image - docker compose up -d --remove-orphans + # Stop and remove old container + docker stop skamp-app || true + docker rm skamp-app || true + + # Start new container with environment variables + docker run -d \ + --name skamp-app \ + --restart unless-stopped \ + -p ${{ secrets.APP_PORT }}:8080 \ + -e SPRING_PROFILES_ACTIVE=${{ secrets.SPRING_PROFILES_ACTIVE }} \ + -e SPRING_DATASOURCE_URL=jdbc:postgresql://${{ secrets.POSTGRES_HOST }}:${{ secrets.POSTGRES_PORT }}/${{ secrets.POSTGRES_DB }} \ + -e SPRING_DATASOURCE_USERNAME=${{ secrets.POSTGRES_USER }} \ + -e SPRING_DATASOURCE_PASSWORD=${{ secrets.POSTGRES_PASSWORD }} \ + -e SPRING_JPA_HIBERNATE_DDL_AUTO=${{ secrets.HIBERNATE_DDL_AUTO }} \ + -e SPRING_SECURITY_OAUTH2_RESOURCESERVER_JWT_ISSUER_URI=${{ secrets.KEYCLOAK_ISSUER_URI }} \ + -e CORS_ALLOWED_ORIGINS=${{ secrets.CORS_ALLOWED_ORIGINS }} \ + -e S3_ACCESS_KEY=${{ secrets.MINIO_ACCESS_KEY }} \ + -e S3_SECRET_KEY=${{ secrets.MINIO_SECRET_KEY }} \ + -e S3_ENDPOINT=${{ secrets.MINIO_ENDPOINT }} \ + -e SERVER_PORT=8080 \ + -e JAVA_OPTS="${{ secrets.JAVA_OPTS }}" \ + ${{ vars.REGISTRY_URL }}/${{ vars.NAMESPACE }}/${{ vars.REPO_NAME }}:${{ github.sha }} # Clean up old images docker image prune -af --filter "until=168h" - # Show running containers - docker compose ps + # Show running container + docker ps --filter name=skamp-app diff --git a/docker/compose.yml b/docker/compose.yml index ab78f7c..074f70b 100644 --- a/docker/compose.yml +++ b/docker/compose.yml @@ -3,9 +3,6 @@ services: image: ${REGISTRY_URL}/${NAMESPACE}/${REPO_NAME}:${IMAGE_TAG:-latest} container_name: skamp-app restart: unless-stopped - depends_on: - postgres: - condition: service_healthy ports: - "${APP_PORT:-8080}:8080" environment: @@ -45,8 +42,6 @@ services: start_period: 60s volumes: - postgres_data: - driver: local app_logs: driver: local