기타/인프라 구축과정

[Infra] 2. 젠킨스 설정 - Voda Project

배발자 2023. 4. 4.
반응형

젠킨스 컨테이너를 구동시켜 깃랩의 프로젝트가 병합될 때 자동으로 빌드 과정을 거친다. 

 

 

| /home/ubuntu/Dockerfile

FROM jenkins/jenkins:lts

USER root

RUN apt-get update && \
    apt-get -y install apt-transport-https \
        ca-certificates \
        curl \
        gnupg2 \
        zip \
        unzip \
        software-properties-common && \
    . /etc/os-release && \
    curl -fsSL https://download.docker.com/linux/${ID}/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
    add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/${ID} \
    $(lsb_release -cs) \
    stable" && \
    apt-get update && \
    apt-get -y install docker-ce

 

이 Dockerfile은 Jenkins LTS 이미지를 기반으로하여 새로운 이미지를 빌드하는데 사용된다.

먼저, root 사용자로 전환하여 이미지의 패키지를 업데이트한다. 

 

그 다음으로, apt-transport-https, ca-certificates, curl, gnupg2, zip, unzip, software-properties-common 패키지를 설치하고, Docker GPG 키를 다운로드하고 추가하여 Docker CE를 설치한다.

 

이 작업은 Docker를 이용한 빌드 및 배포를 위한 환경을 구성하는 것이다. 따라서 이 Dockerfile은 Jenkins LTS 이미지에 Docker CE를 설치하는 작업을 수행한다. 

 

 

| /home/ubuntu/docker-compose.yml 

# docker-compose.yml
version: '3.7'

services:
  jenkins:
    build:
      context: .
    container_name: jenkins
    user: root
    ports:
      - 8080:8080
    volumes:
      - ./jenkins_home:/var/jenkins_home
      - //var/run/docker.sock:/var/run/docker.sock

 

이 파일은 Docker Compose를 사용하여 Jenkins 서비스를 정의한다. 

 

버전 3.7을 사용하고 "jenkins"라는 이름을 붙인다. 현재 디렉토리에서 Dockerfile을 사용하여 빌드되고 "jenkins"라는 컨테이너 이름과 root 사용자로 실행된다. 이 서비스는 호스트의 8080 포트와 컨테이너의 8080 포트를 연결한다.

 

jenkins 컨테이너에서 실행되는 정보들을 저장하기 위해 Volume설정을 해줘야한다. "jenkins_home" 디렉토리를 컨테이너 내부의 "/var/jenkins_home" 디렉토리와 연결하고, 호스트의 "/var/run/docker.sock" 소켓을 컨테이너 내부의 "/var/run/docker.sock" 파일과 연결한다. 

 

"/var/run/docker.sock" 파일은 호스트 시스템에서 Docker 데몬과의 통신을 위한 Unix 소켓 파일이다.

이 파일은 Docker CLI와 같은 도구가 Docker 데몬과 통신하여 컨테이너 생성, 실행, 중지 및 삭제와 같은 작업을 수행할 수 있도록 한다. Docker Compose 파일에서 "/var/run/docker.sock" 파일을 컨테이너 내부의 "/var/run/docker.sock" 파일과 연결하면, Jenkins 컨테이너 내에서 Docker 데몬과 통신할 수 있게 되면서 Jenkins 서비스에서 Docker를 이용한 빌드 및 배포 작업을 수행할 수 있다. 즉, 이 파일은 Jenkins 서비스를 정의하고 호스트와 컨테이너 간의 파일 및 포트 연결을 설정한다.

 

 

반응형

댓글