ํ๋ก ํธ์๋(Svelte), ๋ฐฑ์๋(PHP), ๋ฐ์ดํฐ๋ฒ ์ด์ค(MySQL)๋ฅผ Docker Compose๋ก ํตํฉ ๋ฐฐํฌํ๊ณ ,
GitHub Webhook๊ณผ Jenkins๋ฅผ ์ฐ๊ณํ์ฌ ์ฝ๋ Push ์ ๋น๋ & ๋ฐฐํฌ๋ฅผ ์๋์ผ๋ก ์ํํ๋ CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ ํ์คํ To-Do List ์ ํ๋ฆฌ์ผ์ด์
์
๋๋ค.
XAMPP์ ๊ฐ์ ๋ก์ปฌ ์๋ฒ ์์ด, ์ปจํ
์ด๋ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ๋ฐ ๋ฐ ์ด์ ํ๊ฒฝ์ ์ผ์ํํ๊ณ ,
Jenkins๋ฅผ ํตํด Push๋ฅผ ํธ๋ฆฌ๊ฑฐ๋ก ํ๋ ์๋ ๋น๋ & ๋ฐฐํฌ ํ๊ฒฝ(DevOps) ์ ๊ตฌ์ฑํ์ต๋๋ค.
GitHub์์ ์ฝ๋ Push ์, Webhook์ ํตํด Jenkins๊ฐ ์๋์ผ๋ก ๋น๋๋ฅผ ํธ๋ฆฌ๊ฑฐํ๊ณ
๋ณ๊ฒฝ๋ ์์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Docker ์ด๋ฏธ์ง ๋น๋ ๋ฐ ์๋น์ค ์ฌ๋ฐฐํฌ๊น์ง ์๋ํ๋ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ์ต๋๋ค.
todoapp/
โโโ docker-compose.yml # ์ ์ฒด ์๋น์ค ์ ์
โโโ db/ # DB ์ด๊ธฐํ ๋ฐ ๊ถํ ์ค์
โ โโโ init.sql
โโโ backend/ # PHP API ์๋ฒ
โ โโโ Dockerfile
โ โโโ config.php
โ โโโ getTodos.php / addTodo.php / deleteTodo.php
โโโ frontend/ # Svelte ํ๋ก ํธ์๋
โ โโโ Dockerfile
โ โโโ src/
โ โโโ public/
services:
db:
image: mysql:8.0
container_name: todo-db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: todoapp
MYSQL_USER: todo
MYSQL_PASSWORD: todo123
volumes:
- ./db:/docker-entrypoint-initdb.d
ports:
- "3306:3306"
backend:
build: ./backend
container_name: todo-backend
ports:
- "8082:80"
depends_on:
- db
frontend:
build: ./frontend
container_name: todo-frontend
ports:
- "3000:5173"
depends_on:
- backend
CREATE TABLE IF NOT EXISTS todos (
id INT AUTO_INCREMENT PRIMARY KEY,
task VARCHAR(255) NOT NULL,
completed BOOLEAN DEFAULT FALSE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON todoapp.* TO 'todo'@'%';
FLUSH PRIVILEGES;
---
๐ backend/config.php (DB ์ฐ๊ฒฐ ์ค์ )
<?php
$host = "db";
$user = "todo";
$pass = "todo123";
$db = "todoapp";
$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
---
๐ก frontend API ์ฐ๊ฒฐ ์์ (Svelte)
const res = await fetch('http://localhost:8082/getTodos.php');
---
๐ ๏ธ ์คํ ๋ฐฉ๋ฒ
# 1. ํ๋ก์ ํธ ํด๋๋ก ์ด๋
cd ~/todoapp
# 2. Docker Compose๋ก ๋น๋ ๋ฐ ์คํ
docker compose up -d --build
---
๐ ์ ์ URL
http://localhost:3000 - Svelte ํ๋ก ํธ์๋
http://localhost:8082/getTodos.php - PHP API ๋ฐฑ์๋
---
๐ ํ๋ก์ ํธ ์ฃผ์ ๊ฒฝํ
ํ๋ก ํธ(Svelte) + ๋ฐฑ์๋(PHP) + DB(MySQL) ํตํฉ ์ด์
Docker Compose๋ฅผ ํตํ ๋ฉํฐ ์ปจํ
์ด๋ ๋ฐฐํฌ ํ๊ฒฝ ๊ตฌ์ถ
API ๊ฒฝ๋ก, DB ๊ถํ, ์ธ์ฝ๋ฉ ์ด์ ์ง์ ํด๊ฒฐ
XAMPP ์์ด ์์ ํ ์ปจํ
์ด๋ ๊ธฐ๋ฐ ๊ฐ๋ฐ ์ค์ต