일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 개발
- 리엑트 네이티브
- 클론코딩
- 자바
- JPA
- 프론트엔드
- 풀스택
- 스프링
- 서버 개발자
- 비전공자
- react-native
- 국비지원
- Spring
- react
- spring boot
- 코딩
- docker
- Java
- 개발자
- 스프링 부트
- 무중단 배포
- 백엔드
- Redux
- SQL
- github actions
- react native
- 리엑트
- 프론트 엔드
- 서버 배포
- 스타트업
- Today
- Total
오티스의개발일기
무중단 배포 (9) [ Github Actions 설정 편 ] spring boot + mysql + docker + github actions 본문
무중단 배포 (9) [ Github Actions 설정 편 ] spring boot + mysql + docker + github actions
안되면 될때까지.. 2025. 1. 20. 10:04
이번시간에는
Github Action을 사용한 무중단 배포를 하기위해
설정을 하고 배포까지하여 마무리하는 방법을 보여드리겠습니다.
배포하고 마무리하는 글은 다음글에서 이어서 이야기하겠습니다.
목차
1. 프로젝트 생성
2. SQL 설정
3. git 생성
4. aws EC2 생성
8. spring boot HealthcheckController 작업 및 yml + Dockerfile 작업
9. Github Actions 설정 😀
10. 최종 배포
전체 코드는 여기에 올라와있습니다.
https://github.com/1domybest/Spring_none_stop_deploy
1. 자신의 레파지토리로 접속
2.Settings 클릭
3. 왼쪽 목록중 Security → Secrets and variables → Actions 클릭
4. New repository secret 클릭
이제 여기 Name과 Secret을 만들건데 아래는 만들 목록을 적어보겠습니다
마지막은 방법이 좀 다르니 꼭 제대로 읽고
Name값을 아래와 같이 똑같이 적어주셔야합니다.
1. 도커 로그인 토큰
Name : DOCKERHUB_TOKEN
Secret: dckr_pat_IB5IEr6xRugDkJ18gfmZd7eK_b8
2. 도커 허브 유저이름
Name : DOCKERHUB_USERNAME
Secret: otisaws
3. EC2 SSH 시크릿키
Name : EC2_SSH_KEY
Secret:
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAogEW0Le9equBvTtHtbb/mLQkOhoAceT922OGReM2VoqgBMFL
Mv5bXZ9DNs0kjkwpAX7HT63dVF4v/+gfYbMbsnxgp8RnRWivBg93zh09wxCSwzHc
yC6WFE3VgOj16p7SvGKoUVMkJLAg7fEoDBULgECT2TIbYDAxeaVtFcQRHVCPaUD4
zOqtnFKvvkPVvF9jlsN064IuyoH3U8mx6Nie5lCpx0PT1evihZH8wYKu26N/kcNT
/zpLUGS0FbQWsQ4908ZjD5YTIAQG7djxNSilLBnjoB7ctJEVOvOaU+BpJqJgHgz9
X2zQ1ggBkGBxZuq2a/mKnQWYfUpR+jE/mQKtzQIDAQABAoIBAAJj77k+rM4Nj8mC
AWnd/GF9bvdogM8taM1+53FKi/e07e2ECJ8E/8Ye3ngFiN+MoiJCg6BaWWSwSxcE
jsn7QZJdoXN4Q2nTxJlbSxJAfjPNn8y/hJlzjoVYLKlNRquikktzTTZ9+o+MBcBd
CZE8EkJfMY9H3P2LWH+KAFUM4o/DJYe2uwbnJP0/KPJ1LoLGsuekz9+FV0L5ftAH
qll9gwZC7hexrpTdB+8TelpfoGbnqb7nSGwsUirLotSyxdp3hQtW5jEr1UuheQey
k0i11SQFDlECUSjCW4//ZtPWM0g0tnXRNm3qUaSYsFNcTMfM13taps7c0f0asimv
C1ClU0UCgYEA0AIgD5tqSn2RnoRCId8KfOC4FhJAO0sN3U6JeZgpdXWBNg4f/7G+
7npdbhW7h7g4z5p/Hbv2AWMrorQywNiQgi1NItscyNhxmLznuoaGeo8OfcCk0yQT
PxZBzOwODPuR2W4Lmc1Z+e385IJoL/oIS5OkSOaRfUW+bWNyMh4C+fMCgYEAx2HD
ytiBNb8lFhfSUreu/vnkUUJNIK8rnsdw1LuspJpi0QKIFz1tmkUS0nuZ8UGUV+xn
ma7RTZol11CqwLxUkEVUk5QJcqlSMHZoWY0+7gcm12147xITU8yL/coIEe88S8aY
OS3OH/781p8k9WtlYx2omw61iRo+hOskcm1T6T8CgYA/xFcF0dQ878/Dc7I+Zfz2
GYH1qjSsuK6QaLI2Z5JWIuawppXish/hRfv8coch7TTlV+yeNfANrtRCtdFVU07B
yZd7Fwb0/32boFW91d3GFrMPlA4zeDy6O12Cr98C1eB5coX16YEq4G2FtACyrIj8
ek+D1cNGTyo4qKLqgE7TRwKBgGKYHdH5Liv90cETFpaA7rB3skfcmXdIKDHkPg90
nvLmxWbF8bZMUh6veZdMN9vtqgWwiaqdoDLXv06yPT4B429UWXaBBgsFX/dHFmLy
TeQ29SYipGLUdWpDBBcECOmVfCOcmTntRLjdxvn6yLPz37cbu3yx0WNy7uebv/I1
zgDRAoGAP49Ouf3aQEUEHzDAlrd3HtPjykD0pQ9i7KVa/e+lpVnqhec45NIqjki5
ifHXQ5DTXJcOY8MYyjCs27HyOidD0v/gM8I4Vg+Ndgv8+xnTIt7f25Wojqc+UZlQ
5F+GzAjdXDLfkztqw0tcvZIfEE9sQAnIeAy3pMCtarTULjcMdl0=
-----END RSA PRIVATE KEY-----
4. EC2 퍼블릭 IP :
Name: SPRING_BOOT_DOCKER_ID
Secret: 3.107.148.204
5. application-secret.yml
Name: APPLICATION_SECRET
Secret: 아래글을 확인해주세요
마지막 application-secret.yml 은 좀 다른방법으로 키를 넣어야합니다.
일단 부가설명을 하자면
spring boot에서 사용한 application-secret.yml 은 추후에 workflow CICD.yml에서
사요할 예정인데 저희가 깃의 시크릿기능을 사용하여 코드를 넣게되면
값을 가져올떄 정확히 내가 적은값을 볼수가 없게됩니다
그렇기떄문에 application-secret.yml 에있는 코드전체를 복사한후에
base64로 인코딩한 값을 여기 시크릿에 저장하고
사용시에는 CICD기능을 통해 base64 기반으로 반대로 디코딩을 해서 사용할 예정입니다.
일단 application-secret.yml에있는 코드를 복사해봅니다.
application-secret.yml
spring:
config:
activate:
on-profile: local
datasource:
url: jdbc:mysql://localhost:3306/springboot_noneStop_deploy?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true
username: root
password: 1234
driver-class-name: com.mysql.cj.jdbc.Driver
server:
port: 8080
serverAddress: localhost
serverName: local_server
---
spring:
config:
activate:
on-profile: blue
datasource:
url: jdbc:mysql://172.31.42.71:3306/springboot_noneStop_deploy?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true
username: root
password: 1234
driver-class-name: com.mysql.cj.jdbc.Driver
server:
port: 8080
serverAddress: 172.31.42.71
serverName: blue_server
---
spring:
config:
activate:
on-profile: green
datasource:
url: jdbc:mysql://172.31.42.71:3306/springboot_noneStop_deploy?useSSL=false&useUnicode=true&serverTimezone=Asia/Seoul&allowPublicKeyRetrieval=true
username: root
password: 1234
driver-class-name: com.mysql.cj.jdbc.Driver
server:
port: 8081
serverAddress: 172.31.42.71
serverName: green_server
---
2.https://www.convertstring.com/ko/EncodeDecode/Base64Encode
로 접속해서 인코딩 진행
아래 인코딩된값을 복사후에 시크릿에 저장
여기까지 되었으면 CICD를 만들기위한 준비가 완료되었습니다
다음편에서 무중단 배포를 완료하는 글을 작성해보겠습니다
다음글