일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 프론트엔드
- 클론코딩
- Redux
- 자바
- 리엑트
- 코딩
- react
- 국비지원
- 백엔드
- 서버 개발자
- 무중단 배포
- Spring
- 스프링
- spring boot
- JPA
- 스프링 부트
- github actions
- docker
- 서버 배포
- SQL
- 개발자
- 리엑트 네이티브
- 비전공자
- Java
- react-native
- 프론트 엔드
- react native
- 개발
- 스타트업
- 풀스택
- Today
- Total
오티스의개발일기
무중단 배포 (6) [ docker 를 이용한 nginx 설정 편 ] spring boot + mysql + docker + github actions 본문
무중단 배포 (6) [ docker 를 이용한 nginx 설정 편 ] spring boot + mysql + docker + github actions
안되면 될때까지.. 2025. 1. 20. 10:03이번시간은 vim을 사용하여 nginx의 설정파일과
무중단 배포를 위한 yml 파일을 생성해보겠습니다.
목차
1. 프로젝트 생성
2. SQL 설정
3. git 생성
4. aws EC2 생성
8. spring boot HealthcheckController 작업 및 yml + Dockerfile 작업
10. 최종 배포
전체 코드는 여기에 올라와있습니다.
https://github.com/1domybest/Spring_none_stop_deploy
6. 무중단 배포를 위한 nginx 설정
이번시간은 vim을 사용하여 nginx의 설정파일과
무중단 배포를 위한 yml 파일을 생성해보겠습니다.
ec2 SSH 에 접속한후에
docker의 명령어인
docker ps
를 사용하여 nginx가 실행중인지 확인합니다.
이제 아래 커맨드를 사용하여 nginx내부로 들어가 설정을 진행하겠습니다
docker exec -it nginxserver /bin/bash
이 명령어는 docker안에있는 nginx에 진입할수있도록 해주는 명령어입니다.
이제
cd etc/nginx/conf.d
위 명령어를 사용해서 설정파일 폴더로 진입합니다.
ls
위 명령어를 사용해서 보면
root@4bf312c43c06:/etc/nginx/conf.d# ls
default.conf
defualt.conf가 있는데
이제 이걸 편집해서 작업해야합니다.
편집작업을 하려면 vim이라는 툴을 설치해야합니다
apt-get update
apt-get upgrade
apt-get install vim
위 커맨드를 순서대로 사용하여 vim을 다운받습니다
이제
vim default.conf
위 코드를 사용하여 텍스트 에디러를 실행시킵니다.
그리고 안에있는 내용들을 아래 코드로 만들어주세요
참고로 a 를 누르시면 insert모드가되고
저장후 나가기는 esc → :wq! → 엔터
를 하면 수정된 파일이 저장됩니다.
# added ===============
upstream blue {
server 프라이빗IPv4주소:8080;
}
upstream green {
server 프라이빗IPv4주소:8081;
}
#=======================
server {
listen 80;
listen [::]:80;
server_name localhost;
access_log /var/log/nginx/host.access.log main;
error_log /var/log/nginx/error.log debug;
# added =========
include /etc/nginx/conf.d/service-env.inc;
#===============
location / {
# added ======
proxy_pass http://$service_url;
proxy_set_header X-Real-ID $remote_addr;
proxy_set_header X-Forwarded_for $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
# ===========
root /usr/share/nginx/html;
index index.html index.htm;
}
location /healthcheck/green {
proxy_pass <http://프라이빗IPv4주소:8081/env>;
proxy_set_header X-Real-ID $remote_addr;
proxy_set_header X-Forwarded_for $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location /healthcheck/blue {
proxy_pass <http://프라이빗IPv4주소:8080/env>;
proxy_set_header X-Real-ID $remote_addr;
proxy_set_header X-Forwarded_for $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
location /env {
proxy_pass http://$service_url/env;
proxy_set_header X-Real-ID $remote_addr;
proxy_set_header X-Forwarded_for $proxy_add_x_forwarded_for;
proxy_set_header Hos $http_host;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
위에있는 프라이빗IPv4주소 는
인스턴스의 오른쪽 상단에있는 프라이빗IPv4주소 를 가져와서 적으시면됩니다.
이제 저장하고 나가주시면 됩니다.
이제 무중단 배포를 위한 변수파일을 한개 만들어줄겁니다
위치는 이전과 동일한 상태이고
nginx 내부의 etc/nginx/conf.d 위치입니다.
vim service-env.inc
위커맨드를 사용해서 에디터를 열어주세요
set $service_url blue;
그안에 위 코드를 작성한후 저장후 나와주세요
이제 설정이 완료되었으니
nginx를 다시 reload 시켜야합니다.
nginx -s reload
위 코드를 사용하여 nginx를 재시동 시켜줍니다.
그리고
exit
를 사용하여 밖으로 나와숩니다.
cd /home/ubuntu
나온후에 위 코드를 사용하여 우분투 폴더로 이동합니다.
이제 여기에서 2개의 파일을 만들어줄건데
docker-compose-blue.yml 와 docker-compose-green.yml
를 만들어줄겁니다
같은 방식으로 vim을 통해 파일을 작성해줍니다.
docker-compose-blue.yml
version: '3.8'
services:
blue:
image: otisaws/spring_none_stop_deploy_docker:latest
container_name: blue
ports:
- "8080:8080"
environment:
PROFILES: blue
ENV: blue
docker-compose-green.yml
version: '3.8'
services:
green:
image: otisaws/spring_none_stop_deploy_docker:latest
container_name: green
ports:
- "8081:8081"
environment:
PROFILES: green
ENV: green
여기까지 작성되었고 다음시간은
docker 를 이용한 mysql 설정 하는 작업을 진행해보겠습니다.
다음글