일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- myBatis
- 스프링 시큐리티
- error
- ChatGPT
- 리액트 캡차
- 스프링
- react simple captcha
- 스프링 시큐리티 로그인
- spring security 로그인
- react captcha
- 리액트 심플캡차
- react 자동입력방지
- Spring Security
- 에러
- react 심플캡차
- CI
- Docker
- SpringBoot
- git
- react 상태
- Security 로그인
- spring error
- 깃
- build
- REACT
- Spring Boot
- 젠킨스
- jpa
- react 캡차
- maven
- Today
- Total
I can do it(Feat. DEV)
[CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[1편] 본문
평소 CI/CD에 대해서 관심은 있었지만 직접 경험해 보기에는 어려울 듯하여 미루고 미루다 더 이상은 안 되겠다!! 싶어서 쓰는 젠킨스 서버 설치 포스팅!!🎉
🖥️세팅 환경
- 클라우드 서비스 : Google Cloud Platform(GCP)
- 클라우드 서버(젠킨스 서버) os : ubuntu 20.04 LTS
- 클라우드 서버(장고 어플리케이션 서버) os : unbuntu 20.04 LTS
- 장고 웹 서버 구조 : Nginx + Gunicorn + Django Framwork
필자는 GCP를 사용해 VM 인스턴스 2개를 만들어서 환경을 구축하였음!
그리고 장고 웹 서버 환경은 도커 컨테이너를 사용하지 않고 직접 설치하였고, 깃 레포지토리 master 브랜치에 소스를 push 한 뒤 운영 중인 서버에서 git pull을 통해 소스를 최신화하는 방식으로 배포를 진행하고 있음.(반자동 배포)
그렇기 때문에 CI(Continuous Integration)가 완료되었을 때 젠킨스 서버에 등록한 Job을 실행시켜 CD(Continuous Deployment)를 진행하려고 함!!
추후에는 CI가 완료되면 도커 이미지를 만들어 도커 허브에 push 하고 도커 컴포즈를 사용해 장고 웹 서버 환경을 만들어보겠음!!😄
참고로, 이 포스팅에서는 장고 어플리케이션 서버는 만들어졌다는 가정하에 진행함!!😉
전체적인 과정은
1. 젠킨스 서버에 도커를 설치하여 젠킨스 컨테이너를 실행
2. 젠킨스 서버 초기 세팅
3. 깃헙과 젠킨스 서버 연동 작업(키 등록, 웹훅 설정 등)
4. 젠킨스 서버에 빌드 및 테스트 환경 설정(python, pip 설치 등)
5. CI가 완료되었을 때 실행할 젠킨스 Job 등록(배포할 때 사용할 명령어)
6. CI/CD 테스트
로 흘러갈 듯함!!
그럼 지체할 거 없이 바로 시작!✈️
[1편] 도커 설치 과정
sudo apt-get update # 슈퍼유저 권한으로 패키지 목록 업데이트
먼저 도커를 설치하기 앞서 패키지 목록을 업데이트하여 최신 버전의 패키지를 설치할 수 있도록 함.
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
- apt-transport-https : HTTPS를 통해 패키지를 다운로드할 수 있도록 해줌
- ca-certificates : SSL/TLS 인증서를 검증하는데 필요한 인증서 패키지
- curl : CLI에서 데이터를 전송할 수 있는 도구
- software-properties-common : 소프트웨어 패키지를 관리하기 위한 스크립트 모음
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
- curl -fsSL : URL에서 데이터를 다운로드함. 이 옵션들은 에러를 출력하지 않고 리다이렉트 된 위치로 자동으로 이동하도록 하는 설정
- https://download.docker.com/linux/ubuntu/gpg : 도커의 공식 GPG 키
- sudo apt-key add - : 다운로드한 키를 시스템의 APT 키 목록에 추가
위 절차는 설치되는 도커 패키지의 출처가 믿을 수 있는지 검증하는 단계임. 이 단계를 완료하면 우분투의 패키지 관리 시스템이 도커 패키지를 공식적으로 인증받은 패키지로 인증하고, 이후 패키지 설치 과정에서 신뢰할 수 있다고 인식함.
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
- add-apt-repository : 새로운 소프트웨어 레포지토리를 시스템에 추가
- deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable : 도커의 레포지토리
- lsb_release -cs : 현재 운영체제의 코드네임 출력
이렇게 소프트웨어 레포지토리에 추가하면, 추후 도커의 설치 및 업데이트가 우분투의 패키지 관리 시스템을 통해 자동으로 처리된다고 함.😯
sudo apt-get update # 다시 패키지 목록 업데이트
sudo apt-get install -y docker-ce docker-ce-cli containerd.io # 도커 관련 패키지 설치
- docker-ce : 도커 커뮤니티 에디션 패키지 설치
- 도커 자체의 핵심 실행 환경을 제공함
- 컨테이너를 생성하고 관리하는데 필요한 모든 기능을 포함
- docker-ce-cli : 도커 커뮤니티 에디션 CLI 도구 설치
- 도커의 명령줄 인터페이스(CLI)를 제공
- docker run, docker build 등의 명령을 실행할 수 있는 도구가 포함
- docker-ce 핵심 서비스와 통신하여 다양한 작업 수행
- containerd.io : 컨테이너 런타임
- 도커 엔진에서 사용하는 컨테이너 런타임
- 컨테이너 생명 주기를 관리하는 저수준의 컨테이너 런타임으로, 컨테이너 실행, 중지, 삭제 등의 작업을 담당함
- 도커가 아닌 다른 환경에서도 사용될 수 있는 독립적인 구성 요소
여기까지 진행하면 도커가 설치완료 되었음.
But!! 도커 명령어를 사용할 때마다 sudo를 사용해 슈퍼 유저의 권한을 사용해야 함.
sudo 없이 도커 명령어를 사용하려면 도커 그룹에 지금 사용자를 추가해서 그룹 권한을 적용해야 함.
먼저 도커 그룹이 있는지 체크✅

getent group docker # docker 그룹이 있는지 조회
도커를 설치하면 자동으로 그룹을 만들어주는 듯함.. 아마도?
sudo usermod -aG 그룹명 사용자명 # 해당 그룹에 사용자 추가 명령어
필자는 그룹명에 docker, 사용자명에 user 이런 식으로 추가함.
이후 다시 조회해 보면 추가된 걸 볼 수가 있음!!
그리고 도커 명령어를 사용해 보면...?? 안됨
newgrp docker
위 명령어로 현재 세션에서 docker 그룹 권한을 적용해야 사용이 가능함!!
이제 sudo 명령어 없이 자유롭게 docker 명령어 가능함.
이제 젠킨스 컨테이너를 실행!!🤗
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins --restart=always -v /home/ubuntu/jenkins_home:/var/jenkins_home jenkins/jenkins:lts
- -d : 백그라운드 모드로 컨테이너를 실행
- -p 8080:8080, -p 50000:50000 : 호스트와 컨테이너 간의 포트 매핑 설정으로, 8080은 웹 인터페이스, 50000은 젠킨스 슬레이브 연결용임
- --name jenkins : 컨테이너명
- --restart=always : 도커 데몬이 재시작될 때마다 컨테이너가 자동으로 재시작되도록 설정
- -v /home/ubuntu/jenkins_home:/var/jenkins_home : 데이터 볼륨을 호스트의 경로와 컨테이너의 경로에 마운트 하여 데이터를 영구적으로 저장(호스트 경로는 필자가 임의로 정함😄)
- jenkins/jenkins:lts : 사용할 젠킨스 이미지로, LTS 버전을 사용(LTS 버전이 장기적으로 좋음)
위 명령어를 실행한다면 도커가 jenkins 이미지를 pull 해서 그 이미지를 가지고 컨테이너를 실행시킴.
이후 docker ps을 cli에 입력하면!!

그리고 웹 브라우저에서 http://[your-vm-ip]:8080으로 접속하여 젠킨스 설정을 하면 되는데...
혹시 접속이 되지 않는다면 방화벽 설정을 하고 진행해야 함!!!(필자는 이미 8080 포트는 열어서 설정은 생략하겠음)
aws나 gcp 둘 다 방화벽 설정하는 방법을 참고!!
이제 2편에서 젠킨스 설정 및 CI/CD 파이프 라인 설정을 진행해 보겠음!! 다들 고생하셨음!!🎉😋
2편에서 봐요~~😉
'개발자 모드 > 응용' 카테고리의 다른 글
[CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[3편] (2) | 2024.09.12 |
---|---|
[CI/CD] Docker로 Jenkins Server 설치 및 실행(Feat. 우분투)[2편] (0) | 2024.09.12 |
[Docker-Compose]PostgreSQL 컨테이너 생성 시 DB 초기화하기 (0) | 2024.07.17 |
[GIT] 깃헙 README 3D 잔디 심기 (0) | 2024.07.09 |
[Bat] 배치 파일로 간단하게 JDK 버전 전환하기! (2) | 2024.04.04 |