Skip to content

Commit f8cf106

Browse files
author
jin.geonwoo
committed
Merge branch 'dev'
2 parents d8b5f06 + 363e09b commit f8cf106

5 files changed

Lines changed: 154 additions & 5 deletions

File tree

.github/workflows/Dev-CI-CD.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ jobs:
7979
with:
8080
host: ${{ secrets.HOST_DEV }}
8181
username: ubuntu
82-
key: ${{ secrets.NEW_DEV_KEY }}
82+
key: ${{ secrets.NEW_KEY }}
8383
source: ./scripts/deploy-dev.sh
8484
target: /home/ubuntu/
8585

@@ -88,7 +88,7 @@ jobs:
8888
with:
8989
host: ${{ secrets.HOST_DEV }}
9090
username: ubuntu
91-
key: ${{ secrets.NEW_DEV_KEY }}
91+
key: ${{ secrets.NEW_KEY }}
9292
source: ./docker-compose-dev.yml
9393
target: /home/ubuntu/
9494

@@ -97,7 +97,7 @@ jobs:
9797
with:
9898
host: ${{ secrets.HOST_DEV }}
9999
username: ubuntu
100-
key: ${{ secrets.NEW_DEV_KEY }}
100+
key: ${{ secrets.NEW_KEY }}
101101
source: firebase-key.json
102102
target: /home/ubuntu/
103103

@@ -108,7 +108,7 @@ jobs:
108108
with:
109109
host: ${{ secrets.HOST_DEV }}
110110
username: ubuntu
111-
key: ${{ secrets.NEW_DEV_KEY }}
111+
key: ${{ secrets.NEW_KEY }}
112112
envs: GITHUB_SHA
113113
script: |
114114
docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_PASSWORD }}

.github/workflows/Test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: Test on Pull Request
33
on:
44
pull_request:
55
branches:
6-
[ "main" ]
6+
[ "dev", "main" ]
77

88
permissions:
99
contents: read

Dockerfile.dev

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
FROM eclipse-temurin:21-jdk
2+
3+
ARG JAR_FILE=./build/libs/*.jar
4+
COPY ${JAR_FILE} server.jar
5+
6+
EXPOSE 8080
7+
8+
ENTRYPOINT ["java", "-Xms256m", "-Xmx512m", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:HeapDumpPath=/tmp/heapdump.hprof", "-XX:OnOutOfMemoryError=kill -9 %p", "-Dspring.profiles.active=dev", "-jar", "server.jar"]

docker-compose-dev.yml

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
version: '3.8'
2+
services:
3+
redis:
4+
container_name: redis
5+
image: redis:alpine
6+
volumes:
7+
- redis-data:/data
8+
ports:
9+
- "6379:6379"
10+
restart: always
11+
deploy:
12+
resources:
13+
limits:
14+
memory: 512M
15+
blue:
16+
container_name: blue
17+
image: jinkonu/feelin-dev:latest
18+
pull_policy: always
19+
expose:
20+
- 8080
21+
ports:
22+
- "8081:8080"
23+
environment:
24+
- TZ=Asia/Seoul
25+
- REDIS_HOST=redis
26+
- REDIS_PORT=6379
27+
volumes:
28+
- ./firebase-key.json:/src/main/resources/firebase-key.json
29+
- /dump/blue-dev:/tmp
30+
depends_on:
31+
- redis
32+
logging:
33+
driver: "json-file"
34+
options:
35+
max-size: "10m"
36+
max-file: "5"
37+
deploy:
38+
resources:
39+
limits:
40+
memory: 512M
41+
green:
42+
container_name: green
43+
image: jinkonu/feelin-dev:latest
44+
pull_policy: always
45+
expose:
46+
- 8080
47+
ports:
48+
- "8082:8080"
49+
environment:
50+
- TZ=Asia/Seoul
51+
- REDIS_HOST=redis
52+
- REDIS_PORT=6379
53+
volumes:
54+
- ./firebase-key.json:/src/main/resources/firebase-key.json
55+
- /dump/green-dev:/tmp
56+
depends_on:
57+
- redis
58+
logging:
59+
driver: "json-file"
60+
options:
61+
max-size: "10m"
62+
max-file: "5"
63+
deploy:
64+
resources:
65+
limits:
66+
memory: 512M
67+
68+
volumes:
69+
redis-data:

scripts/deploy-dev.sh

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
#!/bin/bash
2+
3+
IS_GREEN_EXIST=$(docker ps | grep green)
4+
IS_REDIS_EXIST=$(docker ps | grep redis)
5+
6+
if [ -z "$IS_REDIS_EXIST" ];then
7+
echo "### REDIS ###"
8+
echo ">>> pull redis image"
9+
docker compose pull redis-dev
10+
echo ">>> up redis container"
11+
docker compose up -d redis-dev
12+
fi
13+
14+
# green up
15+
if [ -z "$IS_GREEN_EXIST" ];then
16+
echo "### BLUE -> GREEN ####"
17+
echo ">>> pull green image"
18+
docker pull jinkonu/feelin-dev:latest
19+
echo ">>> remove old green container"
20+
21+
docker compose -f /home/ubuntu/docker-compose-dev.yml rm -fs green
22+
echo ">>> up green container"
23+
docker compose -f /home/ubuntu/docker-compose-dev.yml up -d green
24+
25+
while [ 1 = 1 ]; do
26+
echo ">>> green health check ..."
27+
sleep 3
28+
REQUEST=$(curl http://127.0.0.1:8082/actuator/health)
29+
if [ -n "$REQUEST" ]; then
30+
echo ">>> health check success !"
31+
break;
32+
fi
33+
done;
34+
sleep 3
35+
echo ">>> reload nginx"
36+
sudo cp /etc/nginx/conf.d/green-url.inc /etc/nginx/conf.d/service-url.inc
37+
sudo /usr/sbin/nginx -s reload
38+
echo ">>> down blue container"
39+
40+
docker compose -f /home/ubuntu/docker-compose-dev.yml stop blue
41+
42+
43+
# blue up
44+
else
45+
echo "### GREEN -> BLUE ###"
46+
echo ">>> pull blue image"
47+
docker pull jinkonu/feelin-dev:latest
48+
echo ">>> remove old blue container"
49+
50+
docker compose -f /home/ubuntu/docker-compose-dev.yml rm -fs blue
51+
echo ">>> up blue container"
52+
docker compose -f /home/ubuntu/docker-compose-dev.yml up -d blue
53+
54+
while [ 1 = 1 ]; do
55+
echo ">>> blue health check ..."
56+
sleep 3
57+
REQUEST=$(curl http://127.0.0.1:8081/actuator/health)
58+
if [ -n "$REQUEST" ]; then
59+
echo ">>> health check success !"
60+
break;
61+
fi
62+
done;
63+
sleep 3
64+
echo ">>> reload nginx"
65+
sudo cp /etc/nginx/conf.d/blue-url.inc /etc/nginx/conf.d/service-url.inc
66+
sudo /usr/sbin/nginx -s reload
67+
echo ">>> down green container"
68+
69+
docker compose -f /home/ubuntu/docker-compose-dev.yml stop green
70+
71+
docker image prune -f
72+
fi

0 commit comments

Comments
 (0)