DevOps 13

N100 mini pc로 우분투 서버 구축하기 (외부 네트워크에서 ssh 접속)

알리 익스프레스에서 미니 PC를 서버용으로 구입했다. 내장된 Windows OS를 지우고, Ununtu 22.04LTS를 설치했다.항시 전원을 켜두고, 외부에서 접속할 수 있도록 하기 위해서 ssh 설정을 하는 방법을 기록한다. 윈도우를 지우고 우분투를 설정하는 방법은 이 유튜브에 아주 상세히 나와 있다.https://www.youtube.com/watch?v=pUF2WKcjy4g 1. 포트포워딩을 진행한다. 외부포트 234번으로 접속하면 내부 포트 22번으로 접속이 되도록 설정했다.내부 포트는 Well-Known포트로 22번이 ssh에 할당되어 있다. 2. DCHP 서버가 생성해준 유동 IP ->고정IP 할당접속 단말 정보에서 확인할 수 있는 우분투 서버의 IP를 아래 사진과 같이 고정 IP로 등록한다..

DevOps 2024.07.01

[CI/CD] Jenkins CI/CD 파이프라인 구축 - 1. Docker에 Jenkins 설치하기

Window 환경에서 Docker container로 Jenkin를 설치하고 CI/CD 파이프라인을 구축한 과정을 기록합니다.1. docker hub에서 docker image를 내려받는다.  2. docker container를 실행한다.윈도우 환경에서는 여러 명령어를 중첩해서 사용하려면 \이 아닌 백틱 (`)을 사용해야 한다.볼륨 설정으로 key파일과 컨테이너 내부의 jenkins하위에 있는 디렉토리를 호스트 디렉토리와 연동한다.docker run -d --name jenkins --hostname=jenkins `-p 8080:8080 -p 50000:50000 `-e TZ=Asia/Seoul `-v ${HOME}\practice\key:/key `-v ${HOME}\.jenkins:/var/jen..

DevOps 2024.06.13

[Docker] application.yml 분리해서 Docker container 실행하기

application.yml spring: profiles: default: local --- spring: config: activate: on-profile: local, prod application-prod.yml server: port: 8080 # to be changed some other port number encoding: charset: UTF-8 # 인코딩 설정 version: 0.0.1 path: version: /v1 # DB properties spring: config: activate: on-profile: prod datasource: driver-class-name: com.mysql.cj.jdbc.Driver #TODO : 추후 운영환경의 datasource로 수정 필..

DevOps 2024.04.18

[Docker] 도커 컨테이너 com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure 해결하기

BottleNote 사이드 프로젝트에서 docker 컨테이너 기반의 인프라를 구축하고 개발을 하고 있다. docker-compose에서 MySQL + Redis를 다중 컨테이너로 실행하고, Spring Boot 애플리케이션은 docker-compose가 아닌 Dockerfile로 별개의 컨테이너로 사용하고 있다. Docker-compose로 Spring Boot + MySQL + Redis를 한번에 관리해도 되지만, 배포 시 변경사항은 Spring Boot 애플리케이션에서만 대부분 생기기 때문에,Spring Boot만 별도의 컨테이너로 관리하는 것이 효율적일 수 있다. docker-compose up 으로 MySQL + Redis 컨테이너를 실행시키고, IntelliJ에서 로컬환경으로 프로젝트를 Run하..

DevOps 2024.04.18

[DevOps] Github action으로 Docker환경 CI 구축하기

이전 포스팅에서도 언급했지만, Docker환경에서 CI란 PR혹은 Push로 소스코드의 변경이 감지되면, Dockerfile을 빌드하고 Dockerhub에 변경 된 Docker Image를 Push 하는 것이다. Github Action의 Workflow를 사용해서 소스코드의 변화가 감지되면 Dockerhub에 업로드 되도록 구축해보자 STEP 1. localhost:8080으로 접속하면 "Hello Docker CI"라는 문자열을 반환하는 스프링부트 애플리케이션을 만들어놓자. curl을 사용하여 접속해보면 당연히 Hello Docker CI가 출력된다. STEP2. 아래와 같이 Github Repository에서 Actions으로 이동해서 yaml 파일을 작성한다. Docker Hub에 이미지를 pu..

DevOps 2024.04.18

[DevOps] Github Action 사용법 톺아보기

Github Action이란? 깃허브에 어떤 이벤트가 발생하면 특정 작업이 트리거 되도록 자동화 할 수 있는 CI도구 PR 생성 시 github action을 통해 변경된 코드 검사 main branch에 코드 유입시 github action을 통해 빌드 후 배포 구성 crontab처럼 특정시간에 작업 가능 github action은 VM과 같은 가상환경을 제공 workflow 자동화된 전체 프로세스 과정을 의미하고 하나 이상의 job으로 구성 event에 의해 스케줄이나 트리거 되는 자동화 구성 on 속성을 통해서 해당 workflow가 언제 실행되는지 정의 yaml로 작성되고 깃허브 repository의 .github/workflows 하위에 저장 event workflow를 실행하는 활동 및 규칙 ..

DevOps 2024.04.18

[DevOps] CI/CD란 무엇인가, Docker환경에서의 CI/CD

CI/CD가 필요한 이유 결론부터 요약하자면, 빠른 배포속도와 유연한 반영을 기반으로 하는 효율성이다. CI/CD는 애플리케이션 개발 단계를 자동화하여 보다 짧은 주기로 변경을 제공하여 전반적 개발 프로세스의 효율성과 지속성을 보장하는 것이다. 그리고 ‘빌드-테스트-배포’의 자동화 프로세스를 통해 수동작업을 줄이고 오류 위험을 최소화 한다. CI와 CD를 묶어서 CI/CD 파이프라인을 구축하면 애플리케이션의 통합 및 테스트 단계에서부터 제공 및 배포까지 전체 라이프사이클에 걸친 자동화 및 모니터링이 가능하다. CI/CD를 사용하면 얻을 수 있는 장점 CI (Continuous Integration) CI는 애플리케이셩의 다양한 기능 부여와 서로 다른 모듈까지 동시에 여러 개발자가 작업 가능하도록 구성하는..

DevOps 2024.04.18

[Docker] docker-compose로 여러 컨테이너 동시에 실행하기

Docker compose docker compose는 쿠버네티스와 같이 컨테이너 오케스트레이션 및 컨테이너화 된 애플리케이션 관리에 널리 사용되는 도구이다. docker compose는 다중 컨네이너 Docker 애플리케이션을 정의하고 실행하기 위한 도구이고, yaml파일을 사용하여 애플리케이션 서비스를 수행한다. 이후 docker compose CLI를 이용해서 모든 서비스의 라이프사이클을 관리한다. services: db: image: mysql:8.0 container_name: docker_compose_db volumes: - ./db/mysql/data:/var/lib/mysql - ./db/mysql/init:/docker-entrypoint-initdb.d command: - '--cha..

DevOps 2024.04.10

[Docker] SpringBoot 컨테이너 + MySQL 컨테이너 연동하기

1. 도커 네트워크를 설정해야 한다. 도커 네트워크는 Default가 Bridge로 설정되어 있다. docker network create 명령어를 사용해서 docker-network 라는 도커 네트워크를 생성한다. 2. MySQL 8.0 이미지 생성 아래와 같이 docker pull mysql:8.0 명령어를 통해 mysql 8.0 버전의 이미지를 docker hub에서 pull 받는다. 3. docker-network 와 연동하여 컨테이너 실행 아래와 같이 -d 옵션으로 백그라운드 실행, --name 옵션으로 mysql이라는 컨테이너 이름을 부여하고, -e 옵션으로 환경변수로 잡혀있는 MYSQL_ROOT_PASSWORD를 매개변수로 전달하고 컨테이너를 실행한다. docker ps -a로 실행중인 컨테..

DevOps 2024.04.09

[Docker] SpringBoot + Gradle를 도커 컨테이너로 만들어보자(Dockerfile)

Dockerfile을 만들어서 이미지를 만든 후, 이미지를 컨테이너화 하여 Spring 애플리케이션을 구동하는 예제를 구현해볼 것이다. 1. 아래와 같이 문자열을 반환하는 간단한 컨트롤러를 만들어준다. 2. Dockerfile을 최상위 Root 위치에 작성한다. Base이미지는 openjdk:!7-jdk를 사용했다. COPY ${JAR_FILE} app.jar: 이 명령어는 호스트 시스템의 파일을 Docker 이미지 내부로 복사한다. ${JAR_FILE}은 이전에 정의한 인자를 사용하여 환경변수를 참조한다. 이는 Gradle 빌드 후 생성된 .jar 파일을 Docker 이미지 내부의 app.jar로 복사한다. ENTRYPOINT ["java","-jar","/app.jar"]: 이 명령어는 컨테이너가 시..

DevOps 2024.04.08