docker

    [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 변수에 저장..