1. 계기
Spring Boot를 통한 프로젝트의 CI/CD를 구성하기 위해 Jenkins 설치 환경 구성이 필요했어요 !
그리고 Jenkins를 모니터링 하기 위해 Nginx 라우팅이 필요했어요 😅
2. Docker Network 생성
Nginx와 Jenkins를 연결해주는 Docker Network를 먼저 생성해줍니다
docker network create 이름
저는 해당 네트워크의 이름을 nginx로 짓고 진행했어요 😀
3. Docker-Compose 파일 생성
Jenkins도 Docker-Compose를 통해 설치해줄거에요 !
먼저 Jenkins에 대한 Compose 파일을 생성합니다
# jenkins_compose.yml
version: '3'
services:
jenkins:
image: jenkins/jenkins:lts
container_name: jenkins
restart: unless-stopped
ports:
- "7000:8080"
- "50000:50000"
volumes:
- jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
- /usr/bin/docker:/usr/bin/docker
- /usr/libexec/docker:/usr/libexec/docker
environment:
- TZ=Asia/Seoul
- JENKINS_OPTS=--prefix=/jenkins
networks:
- nginx
volumes:
jenkins_home:
name: jenkins_home
networks:
nginx:
external: true
Jenkins 파이프라인에서 Docker를 사용해야 하는데, 이때 호스트의 Docker를 그대로 사용하기 위해 DOOD 방식을 채택했어요
이를 위해 Docker 관련 볼륨을 마운트해줬습니다 🫡
그리고 Nginx의 라우팅 경로를 맞춰주기 위해 JENKINS_OPTS=--prefix=/jenkins 옵션을 환경 변수로 넣어줬습니다
(https://도메인/jenkins로 Jenkins에 접속할 수 있도록 하기 위함)
또한 연결을 위한 외부 네트워크를 만들어줬으므로, Nginx의 Compose 파일도 수정해줍니다
# nginx_compose.yml
version: '3'
services:
nginx:
image: nginx
container_name: nginx
ports:
- "80:80"
- "443:443"
volumes:
- nginx:/etc
- /etc/letsencrypt:/etc/letsencrypt:ro
environment:
- TZ=Asia/Seoul
restart: unless-stopped
networks:
- nginx
volumes:
nginx:
name: nginx
networks:
nginx:
external: true
4. Nginx 라우팅 설정 추가
이제 Nginx 컨테이너로 접속해 이전에 작성한 /etc/nginx/nginx.conf 에 라우팅을 추가해줍시다
# nginx.conf
# 중략
server {
listen 443 ssl;
server_name 도메인;
ssl_certificate /etc/letsencrypt/live/도메인/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/도메인/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers HIGH:!aNULL:!MD5;
location /jenkins/ {
proxy_pass http://jenkins:8080/jenkins/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_redirect off;
}
}
location 부분을 추가하고, jenkins 서비스 내의 8080포트를 /jenkins/ 패스로 매핑시켜줘요
이제 해당 주소로 접속을 해보면 (https://도메인/jenkins)

이처럼 Jenkins 화면이 나오게 됩니다 😊
저는 이미 설치가 완료된 상태여서 이와 같이 나오고, 아직 설치가 되지 않으신 분들은 설치 화면이 나올거에요
설치는 나오는 절차대로 진행하면 큰 무리 없이 진행할 수 있으므로 생략하도록 하겠습니다
다음번엔 OpenVPN을 이용한 DB의 외부 접근 보안에 대해 이야기 해볼게요 !
'프로젝트 > On-Premise' 카테고리의 다른 글
| On-Premise: 도메인 설정 및 Nginx를 통한 리버스 프록시 구축 (3) (1) | 2025.01.06 |
|---|---|
| On-Premise: SSH에 Google OTP(Authenticator) 적용하기 (2) (3) | 2024.10.07 |
| On-Premise: 보조 PC 서버 컴퓨터로 만들기 (1) (2) | 2024.10.04 |