devops

    Jenkins - Slack 연동

    Jenkins - Slack 연동

    젠킨스 빌드 시, 혹은 빌드 성공 or 실패 여부를 슬랙 알림을 통해 받는 법을 알아보자. Slack 설정 슬랙 앱에서 Jenkins를 검색해서 Jenkins CI 앱을 다운받는다. 구성을 클릭한다. 웹 창이 생기면 Slack에 추가를 클릭한다. 채널 선택에서 원하는 채널을 선택하고 Jenkins CI 통합 앱 추가를 클릭한다. 이후, Slack과 Jenkins 연동 가이드가 나오는데 구버전인지 실제 Jenkins UI와는 상반되는 내용이 있어서 신버전 기준으로 연동 방법을 소개한다. 우선 연동가이드에서 건질 것은 3단계에서 팀 하위 도메인과 통합 토큰 자격 증명 ID인데 따로 복사해서 보관해두도록 하자. Jenkins 설정 젠킨스로 가서 Jenkins 관리 - 플러그인 관리 - 설치 가능 부분에서 검색..

    [CI/CD] Gitlab + Jenkins + Nginx + Docker + AWS EC2 - 무중단 배포

    [CI/CD] Gitlab + Jenkins + Nginx + Docker + AWS EC2 - 무중단 배포

    회사 프로젝트에 CI/CD를 적용할 일이 생겼다. 이전에 Github + Jenkins + AWS CodeDeploy를 사용해 CI/CD를 적용한 적이 있었는데, 회사 사정 상 다른 방식으로 CI/CD를 적용해야 하는 상황이다. 따라서, Gitlab + Jenkins + Nginx + Docker + AWS EC2를 사용한 CI/CD 적용 방법을 기록한다. CI/CD 구조는 다음과 같다. 1. Gitlab 저장소에 Push 한다. 2. webhook을 통해 Jenkins에서 Gitlab 레포지토리에 접근한다. +) Gitlab과 Jenkins는 회사 서버에서 도커 컨테이너로 설치했다. 나는 회사 프로젝트여서 회사 서버에 설치한 것이지, EC2 등 각각 상황에 맞는 환경에 젠킨스를 설치하면 된다. 3. J..

    [Docker] Dockerfile로 Docker에서 Spring boot 서버 실행

    [Docker] Dockerfile로 Docker에서 Spring boot 서버 실행

    도커에서 스프링 서버를 실행하면 유용한 점이 많다. 1. 독립적인 환경으로 서버를 배포할 수 있음 -> 컨테이너 밖에 영향을 주지 않음 2. 배포 환경에서 프로젝트 전체 코드를 가지고 있을 필요가 없다 -> .jar 파일만 갖고 있어도 서버를 실행할 수 있다. 이제부터 방법을 알아보자. Dockerfile 우선 Dockerfile을 준비하자. (파일명: Dockerfile) FROM openjdk:11 ARG JAR_FILE=*.jar COPY ${JAR_FILE} app.jar ENTRYPOINT ["java","-jar","/app.jar"] 대강 해석해보자면, 1. openjdk:11 이미지에 대해 컨테이너를 실행할 것인데 2. 현재 폴더에 대해 .jar 파일이 있다면, JAR_FILE 변수에 저장..

    [Jira] Gitlab 서버 - Jira Cloud 연동

    [Jira] Gitlab 서버 - Jira Cloud 연동

    우선 Jira와 Gitlab을 어떻게 사용하느냐에 따라 연동하는 방식이 다르다. Jira Cloud, gitlab.com 처럼 인터넷에서 바로 사용하는 방식 자체 서버에 설치해서 사용하는 방식 여기서는 , Gitlab을 자체 서버에 설치하고, Jira는 클라우드(인터넷)를 사용하는 방식을 소개한다. 따라서 다음 두 연동에 대해 맞는 방식을 선택해야 한다. Gitlab -> Jira 연동: Jira가 클라우드(인터넷)이기 때문에, Gitlab 자체 설정으로 문제 없이 연동 가능하다. Jira -> Gitlab 연동: gitlab.com(인터넷)이라면 Jira 자체의 무료 앱으로 연동이 가능하지만, 현재 Gitlab이 자체 서버이기 때문에 DVCS 방식을 사용해야 한다. Jira DVCS connector ..

    [Docker] 도커 컨테이너에 깃랩(Gitlab) 설치

    [Docker] 도커 컨테이너에 깃랩(Gitlab) 설치

    Gitlab 이미지 pull docker pull gitlab/gitlab-ce:latest+) 참고 깃랩 관련 이미지는 gitlab-ce, gitlab-ee가 있는데, ce는 community, ee는 enterprise 전용이라고 한다. 나중에 깃랩을 유료 티어(Tier)로 업그레이드하려고 할 때, gitlab-ee는 깃랩을 다시 설치할 필요가 없다. 여기서는 gitlab-ce를 사용했다. [관련자료] GitLab CE vs EE | DevSecOps 구축 컨설팅, 교육, 기술지원 서비스 제공 Gitlab 컨테이너 실행 docker run docker run --detach \ --hostname gitlab.example.com \ --publish 1980:80 --publish 1922:22 -..

    [Docker] Dockerfile & build

    Dockerfile & build 사용자 정의 도커 이미지를 만드는 방법은 대표적으로 docker commit이 있다. 그러나 docker commit은 직접 컨테이너 안에서 원하는 프로그램을 설치한 후에 해당 컨테이너 상태를 그대로 이미지 형태로 복사하는 것이다. 이러한 방법은 실수할 위험도 있고, 현재 컨테이너에 어떤 프로그램들이 설치 되어 있는지 일일이 확인하기 어렵다. 따라서 사용자 정의 이미지를 만드는 방식을 파일 형태로 명세하는 방법이 있는데, 바로 Dockerfile과 build를 사용한 방식이다. 아래 예시를 보자. ex) ubuntu 20.04에서 python을 설치해 서버까지 띄우는 작업을 하고싶다고 하자. 그리고 이를 이미지로 만들고 싶다. 먼저 docker commit을 통해 이미지..

    [Docker] Docker compose

    Docker compose 만약 wordpress_net 이라는 도커 네트워크를 만들고, 이 안에 mysql 컨테이너와 wordpress 컨테이너를 생성하고 싶다면 다음과 같이 명령어를 실행해야 한다. docker network create wordpress_net docker \ run \ --name "db" \ -v "$(pwd)/db_data:/var/lib/mysql" \ -e "MYSQL_ROOT_PASSWORD=123456" \ -e "MYSQL_DATABASE=wordpress" \ -e "MYSQL_USER=wordpress_user" \ -e "MYSQL_PASSWORD=123456" \ --network wordpress_net \ mysql:5.7 docker \ run \ --na..

    [Docker] Docker commit & push

    [Docker] Docker commit & push

    Docker commit & push Docker commit을 통해 나만의 도커 이미지를 만들고 이를 docker hub에 push하는 방법을 알아보자. Docker commit 위 그림을 보면, docker hub에서 pull을 통해 image를 다운받고, run을 통해 컨테이너를 실행한다. 하나의 이미지로 여러 컨테이너를 만들 수 있고, 각각은 독립된 공간을 갖는다. 만약, ubuntu 이미지에서 run을 통해 생성된 컨테이너에서 git을 설치해서 작업하고 있을 때, ubuntu + git이 설치된 현재 컨테이너를 하나의 이미지로 만들고 싶다면 어떨까? 이 때 사용하는 기능이 바로 커밋이다. docker commit을 통해 내가 원하는 상태의 컨테이너를 하나의 이미지로 생성할 수 있다. 추가로, 생..