thumbnail

멋쟁이사자처럼 클라우드 엔지니어링 부트캠프 수강 후기

멋쟁이사자처럼 클라우드 엔지니어링 부트캠프 3기 수강후기

멋쟁이사자처럼 오늘 공부 후기 챌린지 - 클라우드 엔지니어링 편

이런 고민을 하고 있다면, 지금 이 순간에도 멋쟁이사자처럼에서 클라우드 엔지니어링 부트캠프를 수강하며 자신만의 속도로 성장 중인 수강생들을 주목해보세요.


배우고 잊어버리는 건 누구나 겪는 일이에요. 하지만 멋쟁이사자처럼 부트캠프는 단순히 배우는 것에 그치지 않고, 배운 내용을 내 것으로 만드는 방법까지 고민하고 있어요. 그렇다면, 배운 것을 가장 효과적으로 습득하는 방법은 무엇일까요? 바로 기록하고 정리하는 것이죠. 배운 내용을 정리하고 기록하면, 기억은 오래 남고 실전에서도 활용할 수 있으니까요!

멋쟁이사자처럼 부트캠프는 수강생들이 배운 내용을 정리하고 공유할 수 있도록 TIL (Today I Learned) 블로그 챌린지를 진행하고 있어요. 그래서 오늘, 강사님과 멘토님에게 배운 내용을 체계적으로 기록하며 성장하고 있는 수강생의 이야기를 가져왔어요. 작고 사소해 보일지라도 배운 내용을 정리하고, 기록하면서 성장한 이들의 소중한 경험을 지금 확인해 보세요.


개요

Docker를 활용해 Spring Boot 백엔드 서버MySQL 데이터베이스 서버로 구성된 다중 계층(N-tier) 애플리케이션 인프라 구축.

 

1. 기본 흐름

 

1) MySQL 서버 준비

Plaintext
# 현재 Ubuntu에 설치된 MySQL 서버 중지
sudo systemctl stop mysql

# Docker 네트워크 생성
docker network create infra-network

# MySQL 컨테이너 실행
docker run --name db-server -p 3306:3306 \
  --network infra-network \
  -e MYSQL_ROOT_PASSWORD=pass123 \
  -e MYSQL_DATABASE=sampledb \
  -e MYSQL_USER=admin \
  -e MYSQL_PASSWORD=pass123 \
  -d mysql:latest

# 실행 확인
docker ps

# MySQL 컨테이너 내부 접속
docker exec -it db-server bash

# MySQL 접속
mysql -u root -p

 

  • 위의 sampledb에 필요한 DDL, DML은 init.sql로 준비해서 volume mount해도 됨.

Plaintext
-v /home/ubuntu/init:/docker-entrypoint-initdb.d

2) Spring Boot Backend 서버

  1. application.properties 설정 변경→ DB URL: jdbc:mysql://db-server:3306/sampledb?serverTimezone=Asia/Seoul

  2. 프로젝트 빌드 (Ubuntu에서 실행)

Plaintext
cd /home/ubuntu/backend-project
./mvnw package -DskipTests

  3. Dockerfile 작성 (target/app.jar 기준)

Plaintext
FROM openjdk:17
COPY app-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]

 

  4. 이미지 빌드 및 컨테이너 실행

Plaintext
docker buildx build -t backend-app .
docker run --name api-server -p 8080:8080 \
  --network infra-network -d backend-app

 

 5. 로그 확인 및 정상 동작 확인

Plaintext
docker logs api-server -f

 

 

3) MySQL 데이터 영속화 (Volume 사용)

Plaintext
docker run --name db-server -p 3306:3306 \
  --network infra-network \
  -v /home/ubuntu/mysql-data:/var/lib/mysql \
  -e MYSQL_ROOT_PASSWORD=pass123 \
  -e MYSQL_DATABASE=sampledb \
  -e MYSQL_USER=admin \
  -e MYSQL_PASSWORD=pass123 \
  -d mysql:latest

 

 

 

4) Git + Dockerfile 통합 흐름

  1. Dockerfile을 backend 프로젝트 루트(mvnw 위치)에 작성

  2. Git에 프로젝트 푸시

  3. 서버에서 Git pull 후 mvn package

  4. 생성된 .jar와 Dockerfile을 배포 디렉토리로 복사

  5. Docker 빌드 및 실행

  6. API 정상 동작 확인

 

 

개요

  • Docker Compose는 여러 개의 컨테이너를 한 번에 정의하고 실행할 수 있는 도구

  • docker-compose.yml 파일로 설정 및 실행

  • https://docs.docker.com/compose/

 

설치 (Ubuntu 기준)

 

 

yaml 문법 핵심

  • 들여쓰기 중요 (2~4칸)

  • : 뒤에는 공백 필수

  • -로 배열 정의

  • 문자열은 ", ' 없이도 인식 가능

 

 예시

Plaintext
languages:
  - python
  - go
  - rust

user:
  name: "Alice"
  active: true

database:
  host: "localhost"
  port: 3306
  enabled: yes

description: >
  this is a multiline
  value that will be
  joined as a single line

script: |
  echo "hello"
  echo "world"

 

 

docker-compose.yml 구성 예시

Plaintext
version: "3.8"

services:
  db:
    image: mysql:8.0
    container_name: db-container
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: pass123
      MYSQL_DATABASE: sampledb
      MYSQL_USER: admin
      MYSQL_PASSWORD: pass123
    volumes:
      - db-data:/var/lib/mysql
    networks:
      - app-net

  app:
    build: .
    container_name: app-container
    ports:
      - "8080:8080"
    depends_on:
      - db
    networks:
      - app-net

volumes:
  db-data:

networks:
  app-net:

 

 

주요 명령어 정리

명령어

설명

docker-compose up

컨테이너 실행

docker-compose up --build -d

변경사항 반영 & 백그라운드 실행

docker-compose down

종료 및 컨테이너/네트워크 삭제

docker-compose logs

로그 보기

docker-compose stop/start/restart

컨테이너 정지/시작/재시작

docker-compose ps

현재 실행중인 컴포즈 컨테이너 확인

 

홈 : 멋사 부트캠프

멋쟁이사자처럼의 13년 교육 노하우로 IT 취업의 꿈을 현실로!