Skip to content

Update Docker image removal command in deployment workflow to include… #8

Update Docker image removal command in deployment workflow to include…

Update Docker image removal command in deployment workflow to include… #8

Workflow file for this run

name: Deploy Docker to Amazon EC2
on:
push:
branches:
- main
env:
CONTAINER_NAME: client
jobs:
deploy:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_TOKEN }}
- name: Build Docker image
uses: docker/build-push-action@v5
with:
context: .
build-args: |
NEXT_PUBLIC_APP_URL=${{ secrets.NEXT_PUBLIC_APP_URL }}
NEXT_PUBLIC_API_URL=${{ secrets.NEXT_PUBLIC_API_URL }}
NEXT_PUBLIC_AI_API_URL=${{ secrets.NEXT_PUBLIC_AI_API_URL }}
NEXT_PUBLIC_CLERK_TEMPLATE=${{ secrets.NEXT_PUBLIC_CLERK_TEMPLATE }}
NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=${{ secrets.NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY }}
CLERK_SECRET_KEY=${{ secrets.CLERK_SECRET_KEY }}
push: true
tags: ${{ secrets.DOCKER_USERNAME }}/${{ secrets.IMAGE_NAME }}:latest
- name: SSH & Deploy to EC2
uses: appleboy/ssh-action@v0.1.6
with:
host: ${{ secrets.EC2_HOST }}
username: ${{ secrets.EC2_USER }}
key: ${{ secrets.EC2_SSH_KEY }}
script: |
set -e
cd app/client
docker stop ${{ env.CONTAINER_NAME }} || true
docker rm ${{ env.CONTAINER_NAME }} || true
docker rmi ${{ secrets.DOCKER_USERNAME }}/${{ secrets.IMAGE_NAME }}:latest
docker pull ${{ secrets.DOCKER_USERNAME }}/${{ secrets.IMAGE_NAME }}:latest
docker run -d \
--name ${{ env.CONTAINER_NAME }} \
--restart unless-stopped \
-p 3000:3000 \
--env-file .env.production \
${{ secrets.DOCKER_USERNAME }}/${{ secrets.IMAGE_NAME }}:latest