1515 required : true
1616# 2
1717env :
18- IMAGE_NAME : " docker_shonen_dev "
19- CONTAINER_NAME : " docker_shonen_dev_prod_ctr "
18+ IMAGE_NAME : " docker_shonen_prod "
19+ CONTAINER_NAME : " docker_shonen_prod_ctr "
2020
2121# 3
2222jobs :
@@ -36,21 +36,48 @@ jobs:
3636 id : meta
3737 uses : docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
3838 with :
39- images : pawitrawarda/docker_shonen_dev
39+ images : pawitrawarda/docker_shonen_prod
4040
4141 - name : Build and push Docker image
4242 uses : docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
4343 with :
4444 context : .
45+ file : ./Dockerfile.prod
4546 push : true
46- tags : pawitrawarda/docker_shonen_dev :latest
47+ tags : pawitrawarda/docker_shonen_prod :latest
4748 labels : latest
4849
4950 deploy :
5051 runs-on : ubuntu-latest
5152 needs : build_and_push
5253 steps :
53- - name : Deploy to Digital Ocean droplet via SSH action
54+ - name : Checkout the repo
55+ uses : actions/checkout@v4
56+
57+ - name : Create directory on server
58+ uses : appleboy/ssh-action@master
59+ with :
60+ host : ${{ secrets.HOST_KAZUHA }}
61+ username : ${{ secrets.USERNAME }}
62+ key : ${{ secrets.SSHKEY_KAZUHA }}
63+ port : ${{ secrets.PORT }}
64+ passphrase : ${{ secrets.PASSPHRASE_KAZUHA }}
65+ script : |
66+ # Create directory if doesn't exist
67+ sudo mkdir -p /opt/apps-container/personal-web
68+
69+ - name : Copy docker-compose.yml to server
70+ uses : appleboy/scp-action@v1
71+ with :
72+ host : ${{ secrets.HOST_KAZUHA }}
73+ username : ${{ secrets.USERNAME }}
74+ key : ${{ secrets.SSHKEY_KAZUHA }}
75+ port : ${{ secrets.PORT }}
76+ passphrase : ${{ secrets.PASSPHRASE_KAZUHA }}
77+ source : " ./docker-compose.yml"
78+ target : " /opt/apps-container/personal-web/"
79+
80+ - name : Deploy using Docker Compose
5481 uses : appleboy/ssh-action@master
5582 with :
5683 host : ${{ secrets.HOST_KAZUHA }}
@@ -60,11 +87,20 @@ jobs:
6087 passphrase : ${{ secrets.PASSPHRASE_KAZUHA }}
6188 envs : IMAGE_NAME, CONTAINER_NAME
6289 script : |
63- # Pull registry
64- docker pull pawitrawarda/$(echo $IMAGE_NAME):latest
65- # Stop running container
66- docker stop $(echo $CONTAINER_NAME)
67- # Remove old container
68- docker rm $(echo $CONTAINER_NAME)
69- # Run a new container from a new image
70- docker run -d -p 8092:3000 --name $(echo $CONTAINER_NAME) --memory=75m --memory-swap=75m pawitrawarda/$(echo $IMAGE_NAME):latest
90+ # Navigate to the directory and deploy
91+ cd /opt/apps-container/personal-web
92+
93+ # Pull latest image
94+ docker compose pull personal-web-prod
95+
96+ # Stop and remove existing container
97+ docker compose down --remove-orphans personal-web-prod
98+
99+ # Start services
100+ docker compose up -d --force-recreate personal-web-prod
101+
102+ # Check status of the containers
103+ docker compose ps
104+
105+ # Remove unused images
106+ docker image prune -f
0 commit comments