1. Install Docker on your server
Click Here to get detailed description on how to upload your code on server using docker
2. Run " docker ps " command to get the image and container name
3. Store Secrets in GitHub
Go to GitHub Repo → Settings → Secrets and variables → Actions → New Repository Secret, and add:
- DOCKER_USERNAME → Your Docker Hub username
- DOCKER_PASSWORD → Your Docker Hub password/token
- SERVER_HOST → AWS Server IP
- SERVER_USER → ubuntu
- SSH_PRIVATE_KEY → Paste your AWS SSH Private Key
4. Create GitHub Actions Workflow
Create .github/workflows/deploy.yml in your repo:
name: Deploy to QA
on:
push:
branches:
- master # Runs on direct push to 'qa'
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build and Push Docker Image
run: |
docker build -t dockerusername/myapp:${{ github.sha }} .
docker push dockerusername/myapp:${{ github.sha }}
- name: Deploy to Server
uses: appleboy/ssh-action@v0.1.10
with:
host: ${{ secrets.SERVER_HOST }}
username: ubuntu
key: ${{ secrets.SSH_PRIVATE_KEY }}
port: 22
script: |
docker pull dockerusername/myapp:${{ github.sha }}
docker ps -a # Debugging step to check existing containers
docker stop myapp || true
docker rm -f myapp || true
docker run -d -p 3000:3000 --restart unless-stopped --name myapp dockerusername/myapp:${{ github.sha }}
docker image prune -f
- myapp - docker image name
- create account on dockerhub
this process will login to docker hub , build your image and pull that image to your server
comment if you are facing any problem or need any help
Top comments (0)