Update build-docker.yml #8
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build, Publish, and Deploy Docker Images | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - '**/*.py' | |
| - '**/*.js' | |
| - 'Dockerfile' | |
| - '**/*.yml' | |
| jobs: | |
| build-and-publish: | |
| runs-on: [self-hosted] | |
| steps: | |
| # Step 1: Checkout the code | |
| - name: Checkout code | |
| uses: actions/checkout@v2 | |
| # Step 2: Log in to Docker Hub | |
| - name: Log in to Docker Hub | |
| uses: docker/login-action@v2 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} # Store Docker Hub username in GitHub secrets | |
| password: ${{ secrets.DOCKER_PASSWORD }} # Store Docker Hub password in GitHub secrets | |
| # Step 3: Build the Backend Docker image | |
| - name: Build Backend Docker image | |
| run: | | |
| sudo docker build -t jonafoll/backend:${{ github.sha }} ./backend | |
| sudo docker tag jonafoll/backend:${{ github.sha }} jonafoll/backend:latest | |
| # Step 4: Build the Frontend Docker image | |
| - name: Build Frontend Docker image | |
| run: | | |
| sudo docker build -t jonafoll/frontend:${{ github.sha }} ./frontend | |
| sudo docker tag jonafoll/frontend:${{ github.sha }} jonafoll/frontend:latest | |
| # Step 5: Push the Backend Docker image to Docker Hub | |
| - name: Push Backend Docker image to Docker Hub | |
| run: | | |
| sudo docker push jonafoll/backend:${{ github.sha }} | |
| sudo docker push jonafoll/backend:latest | |
| # Step 6: Push the Frontend Docker image to Docker Hub | |
| - name: Push Frontend Docker image to Docker Hub | |
| run: | | |
| sudo docker push jonafoll/frontend:${{ github.sha }} | |
| sudo docker push jonafoll/frontend:latest | |
| deploy: | |
| runs-on: [self-hosted] | |
| needs: build-and-publish # Ensure this job runs after build-and-publish | |
| steps: | |
| # Step 1: Log in to Docker Hub | |
| - name: Log in to Docker Hub | |
| uses: docker/login-action@v2 | |
| with: | |
| username: ${{ secrets.DOCKER_USERNAME }} | |
| password: ${{ secrets.DOCKER_PASSWORD }} | |
| # Step 2: Pull the latest Docker images | |
| - name: Pull Backend Docker image | |
| run: sudo docker pull jonafoll/backend:latest | |
| - name: Pull Frontend Docker image | |
| run: sudo docker pull jonafoll/frontend:latest | |
| # Step 3: Stop and remove existing containers | |
| - name: Stop and remove existing containers | |
| run: | | |
| sudo docker stop backend-container || true | |
| sudo docker rm backend-container || true | |
| sudo docker stop frontend-container || true | |
| sudo docker rm frontend-container || true | |
| # Step 4: Run the updated Docker images | |
| - name: Run Backend Docker container | |
| run: sudo docker run -d --name backend-container -p 5000:5000 jonafoll/backend:latest | |
| - name: Run Frontend Docker container | |
| run: sudo docker run -d --name frontend-container -p 3000:3000 jonafoll/frontend:latest | |
| # Step 5: Verify the containers are running | |
| - name: Verify Backend container | |
| run: sudo docker ps --filter "name=backend-container" --format "{{.Status}}" | grep -q "Up" | |
| - name: Verify Frontend container | |
| run: sudo docker ps --filter "name=frontend-container" --format "{{.Status}}" | grep -q "Up" |