728x90
2025.07.23 - [프로젝트] - 인프라 초기 세팅(Docker)
Docker에 이어서 Jenkins 설정
1. 젠킨스 설치
sudo docker run -d \
--name jenkins \
-p 8080:8080 -p 50000:50000 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v jenkins_home:/var/jenkins_home \
jenkins/jenkins:lts
- 초기 비밀번호
sudo docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
- 플러그인 설치
- Git
- Docker
- pipeline
- Blue Ocean
- SSH plugin
- Jenkins 컨테이너 안에 Docker 설치(Docker in Docker가 아닌 Docker outside of Docker)
- Jenkins 컨테이너 안에서 도커 명령을 쓰기 위해, 호스트 Docker에 접근하는 것만으로 충분
- docker CLI가 컨테이너 안에 없어서 수동설치
- 컨테이너 내부에는 sudo가 없으므로 root 사용자로 직접 실행
sudo docker exec -u root -it jenkins bash
apt update
apt install -y docker.io
exit
2. http://<EC2_Domain or EC2_Public_ip>:8080으로 접속
3. Github와 연결할 job create
- 새로운 item 생성

- 설정
- General

- Pipeline
- Definition : Pipeline script from SCM
- SCM : Git
- Repository URL : 본인의 깃허브 레파지토리 url


- Trigger(자동배포를 원하는 경우)

4. Github에서도 webhook 설정
- Repository setting
- 좌측 메뉴에 webhooks 진입
- 오른쪽 상단 add wobhook

5. Jenkins 파일을 프로젝트 roor경로에 넣기
pipeline {
agent any
environment {
IMAGE_NAME = "test"
CONTAINER_NAME = "gracious_tharp"
HOST_PORT = "8000"
CONTAINER_PORT = "8000"
}
stages {
stage('Build Docker Image') {
steps {
sh "docker build -t ${IMAGE_NAME} ."
}
}
stage('Deploy') {
steps {
sh '''
docker stop ${CONTAINER_NAME} || true
docker rm ${CONTAINER_NAME} || true
docker run -d --name ${CONTAINER_NAME} -p ${HOST_PORT}:${CONTAINER_PORT} ${IMAGE_NAME}
'''
}
}
}
}
6. 자주 발생했던 문제
| 문제 | 원인 | 해결 |
|---|---|---|
UNPROTECTED PRIVATE KEY FILE |
키파일 권한이 너무 개방적임 | chmod 600 <pem파일> |
docker: not found |
Jenkins 컨테이너 안에서 Docker 명령어 사용 불가 | -v /var/run/docker.sock:/var/run/docker.sock 마운트 필요 |
permission denied on Docker socket |
Jenkins 컨테이너가 Docker 권한 없음 | --group-add 999 옵션 추가 |
port is already allocated |
같은 포트로 기존 컨테이너가 실행 중 | docker stop → docker rm 실행 후 새로 실행 |
Selected Git installation does not exist |
Git 설정 누락 | Jenkins Global Tool Configuration에서 Git 설치 경로 지정 |
728x90
'프로젝트' 카테고리의 다른 글
| 인프라 초기 세팅(Docker) (2) | 2025.07.23 |
|---|
댓글