배포 자동화 환경 구성하기

Sei Kim·2024년 1월 28일
0

AWS EC2

목록 보기
6/8
post-thumbnail

들어가며


현재 젠킨스와 데이터베이스가 올라가 있습니다.
현재 개발중인 프로젝트의 인프라 아키텍처를 확인해보면 SnoarQube를 사용하고 있습니다.

현재 컨테이너가 5대인데 4대는 docker-compose로 묶여있습니다. 그래서 JenkinsSonarQubedocker-compose로 한번에 실행되도록 구성하겠습니다.

1. Jenkins


현재 Jenkins는 컨테이너 환경으로 동작하고 있습니다. 데이터는 볼륨으로 관리하고 있어 빠르게 docker-compose파일을 작성해보도록 하겠습니다.

먼저 docker-compose 파일을 관리하는 폴더를 만들어보도록 하겠습니다.

다음과 같이 폴더를 구상하였고 docker-compose.yml 과 환경변수를 관리하는 .env 파일을 만들기 위해 아래 명령어를 실행합니다.

touch docker-compose.yml && \
touch .env

정상적으로 파일이 생긴것을 확인할 수 있습니다.

1.1. docker-compose


이제 docker-compose.yml을 로컬 PC에서 작성하여 AWS EC2로 옮겨보겠습니다.

version: "3"
services:
  jenkins_container:
    container_name: jenkins_container
    image: jenkins/jenkins:jdk17
    ports:
      - ${JENKINS_BINDING_PORT}:8080
      - 50000:50000
    volumes:
      - ${JENKINS_DATA_PATH}:/var/jenkins_home
    restart: on-failure

다음과 같이 vi 편집기를 사용하여 옮긴 후 저장하였습니다.

1.2. .env


다음과 같이 .env에 작성하였습니다.

2. sonarqube


이번에는 정적 코드 분석 도구인 sonarqube를 실행할 수 있도록 내용을 추가합니다.

2.1. docker-compose


위에서 작성한 docker-compose.yml 에 이어서 작성합니다.

version: "3"
services:
  jenkins_container:
	...
  sonarqube_container:
    container_name: sonarqube_container
    image: sonarqube
    ports:
      - ${SONARQUBE_BINDING_PORT}:9000
    volumes:
      - ${SONARQUBE_DATA_PATH}:/opt/sonarqube/data
      - ${SONARQUBE_EXTENSIONS_PATH}:/opt/sonarqube/extensions
      - ${SONARQUBE_LOGS_PATH}:/opt/sonarqube/logs
    restart: on-failure

2.2. volume 생성


jenkins 는 이전글에서 볼륨을 생성했기 때문에 SonarQube를 위한 볼륨을 따로 생성합니다.

2.3. .env


docker-compose.yml에서 사용하는 환경변수를 위해서 .env를 이어서 작성합니다.

3. 실행하기


모든 설정을 끝냈으니 docker-compose를 실행시켜 보도록 하겠습니다.

먼저 처음 실행할 때 문제가 없는지 보기 위해서 -d 옵션 없이 실행합니다.

docker-compose up

⚠️ Warning

Jenkins 가 실행되고 있다면 종료와 컨테이너를 삭제시켜주세요. 데이터는 볼륨으로 관리되어 괜찮습니다.

sonarqube 의 초기 아이디와 비밀번호는 admin 입니다.

정상적으로 동작하는 것을 확인할 수 있습니다.

4. 파일 정리


4.1. docker-compose


version: "3"
services:
  jenkins_container:
    container_name: jenkins_container
    image: jenkins/jenkins:jdk17
    ports:
      - ${JENKINS_BINDING_PORT}:8080
      - 50000:50000
    volumes:
      - ${JENKINS_DATA_PATH}:/var/jenkins_home
    restart: on-failure
  sonarqube_container:
    container_name: sonarqube_container
    image: sonarqube
    ports:
      - ${SONARQUBE_BINDING_PORT}:9000
    volumes:
      - ${SONARQUBE_DATA_PATH}:/opt/sonarqube/data
      - ${SONARQUBE_EXTENSIONS_PATH}:/opt/sonarqube/extensions
      - ${SONARQUBE_LOGS_PATH}:/opt/sonarqube/logs
    restart: on-failure

4.2. .env


#####
# Jenkins
#####

JENKINS_BINDING_PORT=

JENKINS_DATA_PATH=

#####
# SonarQube
#####

SONARQUBE_BINDING_PORT=

SONARQUBE_DATA_PATH=
SONARQUBE_EXTENSIONS_PATH=
SONARQUBE_LOGS_PATH=

Ref


  1. docker hub - sonarqube
  2. SonarQube Default Port - Sonar Community
  3. Docker-SonarQube

0개의 댓글