Dockerfile added #5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |