Skip to content

updated with out certfiles #13

updated with out certfiles

updated with out certfiles #13

Workflow file for this run

name: Build and Deploy to EC2
on:
push:
branches:
- main # Trigger workflow on pushes to the main branch
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
# Step 1: Checkout code
- name: Checkout repository
uses: actions/checkout@v3
# Step 2: Log in to Docker Hub
- name: Log in to Docker Hub`
run: echo "${{ secrets.DOCKER_PASSWORD }}" | docker login -u "${{ secrets.DOCKER_USERNAME }}" --password-stdin
# Step 3: Build and push frontend image
- name: Build and push frontend Docker image
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/frontend:latest -f Frontend/Dockerfile ./Frontend
docker push ${{ secrets.DOCKER_USERNAME }}/frontend:latest
# Step 4: Build and push backend image
- name: Build and push backend Docker image
run: |
docker build -t ${{ secrets.DOCKER_USERNAME }}/backend:latest -f Backend/Dockerfile ./Frontend
docker push ${{ secrets.DOCKER_USERNAME }}/backend:latest
- name: Set up SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.EC2_SSH_KEY }}" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan -H ${{ secrets.EC2_HOST }} >> ~/.ssh/known_hosts
- name: Install Docker on EC2
run: |
ssh -T -i ~/.ssh/id_rsa ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << 'EOF'
# Update package list
sudo apt-get update -y
# Install Docker prerequisites
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common -y
# Add Docker's official GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# Set up Docker stable repository
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# Update package list again
sudo apt-get update -y
# Install Docker CE
sudo apt-get install docker-ce -y
# Start Docker service
sudo systemctl start docker
# Enable Docker to start on boot
sudo systemctl enable docker
# Verify Docker installation
sudo docker --version
EOF
# # Step 2: Deploy to EC2
# - name: Deploy to EC2
# run: |
# ssh -T -i ~/.ssh/id_rsa ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << 'EOF'
# # Pull the latest images
# docker pull ${{ secrets.DOCKER_USERNAME }}/frontend:latest
# docker pull ${{ secrets.DOCKER_USERNAME }}/backend:latest
# # Stop and remove existing containers (if any)
# docker stop frontend || true && docker rm frontend || true
# docker stop backend || true && docker rm backend || true
# # Run the frontend container
# docker run -d --name frontend -p 443:5173 ${{ secrets.DOCKER_USERNAME }}/frontend:latest
# # Run the backend container
# docker run -d --name backend -p 8080:3000 ${{ secrets.DOCKER_USERNAME }}/backend:latest
# EOF
- name: Deploy to EC2
run: |
# ssh -T -i ~/.ssh/id_rsa ${{ secrets.EC2_USER }}@${{ secrets.EC2_HOST }} << 'EOF'
# Add the user to the Docker group
sudo usermod -aG docker $USER
# Ensure the Docker service is running
sudo systemctl start docker
# Verify Docker installation and permissions
sudo docker --version
sudo docker info
# Pull Docker images and deploy containers
echo "Pulling Docker images and starting containers"
# Pull the latest images
docker pull ${{ secrets.DOCKER_USERNAME }}/frontend:latest
docker pull ${{ secrets.DOCKER_USERNAME }}/backend:latest
# # Stop and remove existing containers (if any)
# docker stop frontend || true && docker rm frontend || true
# docker stop backend || true && docker rm backend || true
# Run the frontend container
docker run -d --name frontend -p 443:5173 ${{ secrets.DOCKER_USERNAME }}/frontend:latest
# Run the backend container
docker run -d --name backend -p 8080:3000 ${{ secrets.DOCKER_USERNAME }}/backend:latest
EOF