Skip to content

Dockerfile added

Dockerfile added #5

Workflow file for this run

name: CI/CD Direct Deploy to Server
on:
push:
branches:
- master
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Deploy to server via SSH
uses: appleboy/drone-ssh@v1.7.7
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
envs: APP_NAME,IMAGE_NAME,SERVER_PORT,DOCKER_PORT
script: |
set -e
APP_NAME=${APP_NAME:-iiitt-new-dev}
IMAGE_NAME=${IMAGE_NAME:-iiitt-app}
COMMIT_SHA=${GITHUB_SHA}
echo "Updating repository..."
cd $APP_DIR
git fetch origin main
git pull origin main
if [ "$(docker ps -q -f name=$APP_NAME)" ]; then
echo "Backing up current container..."
docker commit $APP_NAME ${IMAGE_NAME}:backup
docker stop $APP_NAME || true
docker rm $APP_NAME || true
fi
echo "Building new image..."
docker build -t ${IMAGE_NAME}:latest -t ${IMAGE_NAME}:${COMMIT_SHA} .
echo "Running new container..."
docker run -d --name $APP_NAME -p ${SERVER_PORT}:${DOCKER_PORT} ${IMAGE_NAME}:latest
echo "Cleaning up dangling images..."
docker image prune -f
echo "Removing old unused images..."
for img in $(docker images -q); do
if ! docker ps -a --format '{{.Image}}' | grep -q $img; then
echo "Removing unused image $img"
docker rmi -f $img || true
fi
done