Skip to content

Update update_primary_nginx.yml #22

Update update_primary_nginx.yml

Update update_primary_nginx.yml #22

Workflow file for this run

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 4: Build the Backend Docker image
- name: Build Backend Docker image
run: |
docker build --network=host -t jonafoll/backend:${{ github.sha }} ./backend
docker tag jonafoll/backend:${{ github.sha }} jonafoll/backend:latest
# Step 5: Build the Frontend Docker image
- name: Build Frontend Docker image
run: |
docker build --network=host -t jonafoll/frontend:${{ github.sha }} ./frontend
docker tag jonafoll/frontend:${{ github.sha }} jonafoll/frontend:latest
# Step 6: Push the Backend Docker image to Docker Hub
- name: Push Backend Docker image to Docker Hub
run: |
docker push jonafoll/backend:${{ github.sha }}
docker push jonafoll/backend:latest
# Step 7: Push the Frontend Docker image to Docker Hub
- name: Push Frontend Docker image to Docker Hub
run: |
docker push jonafoll/frontend:${{ github.sha }}
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"