프로젝트

인프라 초기 세팅(Jenkins)

class="song" 2025. 7. 23.
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 stopdocker rm 실행 후 새로 실행
Selected Git installation does not exist Git 설정 누락 Jenkins Global Tool Configuration에서 Git 설치 경로 지정
728x90

'프로젝트' 카테고리의 다른 글

인프라 초기 세팅(Docker)  (2) 2025.07.23

댓글