본문 바로가기
devops/docker

docker-compose jenkins

by 아이티.파머 2022. 1. 14.
반응형

docker-compose jenkins

docker, docker-compose 를 사용하여 local 혹은 dev jenkins 를 만들수 있다.
docker 로 jenkins를 설치 하기 위해 3가지 파일을 준비한다.

  • .ENV
  • 환경설정 파일
  • Dcokerfile
  • jenkins docker 설정 파일
  • docker-compose
    docker 를 실행시키기위한 설정 값

.ENV

# VOLUMES : Docker 머신에서 사용하는 물리적인 디렉토리를 실제 디렉토리로 변경
JENKINS_HOME=./jenkins_home

Dockerfile

FROM jenkins/jenkins:lts-jdk11
# user 변경 (root)
USER root
# jenkins 에서 사용할 docker 설정
RUN apt-get update && apt-get install -y lsb-release
RUN curl -fsSLo /usr/share/keyrings/docker-archive-keyring.asc \
  https://download.docker.com/linux/debian/gpg
RUN echo "deb [arch=$(dpkg --print-architecture) \
  signed-by=/usr/share/keyrings/docker-archive-keyring.asc] \
  https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list
RUN apt-get update && apt-get install -y docker-ce-cli

#user 변경 (jenkins)
USER jenkins

# cli plugin 설치
RUN jenkins-plugin-cli --plugins "blueocean:1.25.2 docker-workflow:1.26"

docker-compose.yml

version: '3.7'

services:
  jenkins:
    build:
      context: . #같은 폴더내에 있는 Dockerfile 실행 
    user: root
    ports:
      - 8080:8080
      - 50000:50000
    container_name: jenkins
    volumes:
      # 볼륨 경로를 로컬에 지정함.
      - ${JENKINS_HOME}:/var/jenkins_home
      # 로컬의 docker 와, jenkins 내에서 사용할  docker 엔진을 동일한 것을 사용하겠다는 의미임.
      - /var/run/docker.sock:/var/run/docker.sock

여기 docker-compose.yml 파일이 없다면 아래와 간이 명령어를 다 적어야 한다.

docker run -d -p 8080:8080 --name=jenkinscicd \
-v /사용자경로/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/myjenkins

매번 이런작업을 해야 하거나, 이미지를 삭제후 시작해야 한다면 불편하기때문에 docker-compose.yml 파일을 만들어 관리 한다.

# docker image 구동
docker-compose up -d

skan@mezzoui-MacBookPro jenkins % docker-compose up -d
Creating network "jenkins_default" with the default driver
Creating jenkins ... done

Jenkins 웹 접속

브라우저를 열어 http://localhost:8080 입력하고 접속하면 아래와같이 패스워드를 입력하라고 나온다.

서버 로그를 보면 패스워드 값이 나오는데 그것을 복사해서 넣어주도록 한다.

https://www.notion.so/sangkil/docker-compose-jenkins-5b07653eebf944a7829dd27aa52694f7#eaa08c52a93e4b8fa62c7c56163a9c47

아래 로그에서 나온 패스워드를 넣어준다.

Untitled

docker run options 에 대해 알아보자

  • -d --detach : 백그라운드에서 실행
  • -p --publish list : port 에 대한 매핑을 설정 한다 ':' 을 기준으로 왼쪽은 로컬포트 오른쪽도커의 이미지 포트이다.
    예를들어 8090:8080 은 도커의 포트는 8080이고 외부에서 접속 할수 있는 포트는 8090 이라는 뜻이다.
  • --name 컨테이너에 대한 이름
  • -v --volume list : 컨테이너에 대한 마운트를 물리적인 위치로 마운트 시켜준다.
    이것또한 ':'을 기준으로 왼쪽은 실제 로컬의 물리적경로,오른쪽은 도커내컨테이너의 경로이다.
    예시) -v /사용자경로/jenkins_home:/var/jenkins_home
  • -u : 실행할 사용자 지정
  • --restart always : docker restart 할때 항상 시작해준다. docker service가 중지되었다가 다시 start 될때 container 도 start 된다.
반응형