멋쟁이사자처럼 오늘 공부 후기 챌린지 - 클라우드 엔지니어링 편
이런 고민을 하고 있다면, 지금 이 순간에도 멋쟁이사자처럼에서 클라우드 엔지니어링 부트캠프를 수강하며 자신만의 속도로 성장 중인 수강생들을 주목해보세요.
배우고 잊어버리는 건 누구나 겪는 일이에요. 하지만 멋쟁이사자처럼 부트캠프는 단순히 배우는 것에 그치지 않고, 배운 내용을 내 것으로 만드는 방법까지 고민하고 있어요. 그렇다면, 배운 것을 가장 효과적으로 습득하는 방법은 무엇일까요? 바로 기록하고 정리하는 것이죠. 배운 내용을 정리하고 기록하면, 기억은 오래 남고 실전에서도 활용할 수 있으니까요!
멋쟁이사자처럼 부트캠프는 수강생들이 배운 내용을 정리하고 공유할 수 있도록 TIL (Today I Learned) 블로그 챌린지를 진행하고 있어요. 그래서 오늘, 강사님과 멘토님에게 배운 내용을 체계적으로 기록하며 성장하고 있는 수강생의 이야기를 가져왔어요. 작고 사소해 보일지라도 배운 내용을 정리하고, 기록하면서 성장한 이들의 소중한 경험을 지금 확인해 보세요.
개요
Docker를 활용해 Spring Boot 백엔드 서버와 MySQL 데이터베이스 서버로 구성된 다중 계층(N-tier) 애플리케이션 인프라 구축.
1. 기본 흐름
1) MySQL 서버 준비
# 현재 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해도 됨.
-v /home/ubuntu/init:/docker-entrypoint-initdb.d2) Spring Boot Backend 서버
application.properties 설정 변경→ DB URL: jdbc:mysql://db-server:3306/sampledb?serverTimezone=Asia/Seoul
2. 프로젝트 빌드 (Ubuntu에서 실행)
cd /home/ubuntu/backend-project
./mvnw package -DskipTests3. Dockerfile 작성 (target/app.jar 기준)
FROM openjdk:17
COPY app-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
4. 이미지 빌드 및 컨테이너 실행
docker buildx build -t backend-app .
docker run --name api-server -p 8080:8080 \
--network infra-network -d backend-app
5. 로그 확인 및 정상 동작 확인
docker logs api-server -f
3) MySQL 데이터 영속화 (Volume 사용)
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 통합 흐름
Dockerfile을 backend 프로젝트 루트(mvnw 위치)에 작성
Git에 프로젝트 푸시
서버에서 Git pull 후 mvn package
생성된 .jar와 Dockerfile을 배포 디렉토리로 복사
Docker 빌드 및 실행
API 정상 동작 확인
개요
Docker Compose는 여러 개의 컨테이너를 한 번에 정의하고 실행할 수 있는 도구
docker-compose.yml 파일로 설정 및 실행
설치 (Ubuntu 기준)
yaml 문법 핵심
들여쓰기 중요 (2~4칸)
: 뒤에는 공백 필수
-로 배열 정의
문자열은 ", ' 없이도 인식 가능
예시
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 구성 예시
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 취업의 꿈을 현실로!
