Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
b3e7831
adjust: ํ…Œ์ŠคํŠธ์™€ ์ค‘๋ณต๋˜๋Š” ์ „์ œ๋ฅผ ์ œ๊ฑฐํ•˜๋ผ
JoyDaheeCha Sep 25, 2025
992f060
adjust: ํ—ฌ์Šค ์ฒดํฌ ์ œ๊ฑฐ (smoke ํ…Œ์ŠคํŠธ์—์„œ ํ™•์ธ๋˜๋Š” ๋‚ด์šฉ)
JoyDaheeCha Sep 25, 2025
d1139ca
adjust: ๊ณต์šฉ ํด๋ž˜์Šค์—์„œ Kiosk ๋„ค์ด๋ฐ ์ œ๊ฑฐ
JoyDaheeCha Sep 25, 2025
3a5dd1a
config: cloneRepository ์—์„œ reservation๊ณผ admin๋„ ํด๋ก ํ•˜๋„๋ก ์„ค์ • ์ถ”๊ฐ€
JoyDaheeCha Sep 25, 2025
55fee32
config: Dockerfile-admin, Dockerfile-reservation ์ถ”๊ฐ€ํ•˜๋ผ
JoyDaheeCha Sep 25, 2025
3e656a2
config: docker-compose ๊ตฌ์„ฑ
JoyDaheeCha Sep 25, 2025
e8f203b
test: admin, reservation, kiosk ๊ฐ๊ฐ์— ๋Œ€ํ•ด smoke test ์ž‘์„ฑ
JoyDaheeCha Sep 25, 2025
adda73e
Revert "test: admin, reservation, kiosk ๊ฐ๊ฐ์— ๋Œ€ํ•ด smoke test ์ž‘์„ฑ"
JoyDaheeCha Sep 25, 2025
6617f9f
test: admin, reservation, kiosk ๊ฐ๊ฐ์— ๋Œ€ํ•ด smoke test ์ž‘์„ฑ
JoyDaheeCha Sep 26, 2025
1c9ebd4
config: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ๋ฐฉ๋ฒ• ๋ฐ readme ์ˆ˜์ •
JoyDaheeCha Sep 26, 2025
6c52cff
fix: ๊ด€๋ฆฌ์ž ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์Šค๋ชจํฌํ…Œ์ŠคํŠธ์‹œ 401 ์‘๋‹ต์„ ๊ฒ€์ฆํ•˜๋ผ
JoyDaheeCha Sep 26, 2025
95373f0
test: kiosk์˜ ์ƒํ’ˆ ์กฐํšŒ e2e ํ…Œ์ŠคํŠธ ์ถ”๊ฐ€
JoyDaheeCha Sep 26, 2025
bbcf680
refactor: e2e ํ…Œ์ŠคํŠธ์—์„œ ๊ฒ€์ฆ ๋ถˆํ•„์š”ํ•œ ๋ถ€๋ถ„ ์ œ๊ฑฐ
JoyDaheeCha Sep 26, 2025
32d7728
fix: e2e ํ…Œ์ŠคํŠธ์‹œ ํ† ํฐ ๊ฐ€์ ธ์˜ค๋Š” ๋กœ์ง, admin ์ ‘๊ทผ ์•ˆ๋˜๋˜ ํ˜„์ƒ ์ˆ˜์ •
JoyDaheeCha Sep 26, 2025
7891c12
refactor: ๋กœ๊น… ์ถ”๊ฐ€
JoyDaheeCha Sep 26, 2025
d1f57e8
refactor: ๋ถˆํ•„์š” ๋กœ์ง ์ œ๊ฑฐ
JoyDaheeCha Sep 26, 2025
6174c0d
์•ฑ compose๋ฅผ ๊ณต์šฉ ๋„คํŠธ์›Œํฌ ๋ฐ DB๋กœ ์ „ํ™˜
JoyDaheeCha Sep 26, 2025
bba58d6
manage-services.sh๋ฅผ ๊ณต์šฉ ์ธํ”„๋ผ DB ์‚ฌ์šฉํ•˜๋„๋ก ์—…๋ฐ์ดํŠธ
JoyDaheeCha Sep 26, 2025
188e5ef
DB ์Šคํ‚ค๋งˆ ์ˆ˜์ • ๋ฐ DDL ๋ชจ๋“œ ์กฐ์ •
JoyDaheeCha Sep 26, 2025
5de93b2
fix: admin ์„œ๋น„์Šค์˜ data.sql์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.
JoyDaheeCha Sep 26, 2025
2e745bf
fix: reservation ์„œ๋น„์Šค์˜ data.sql์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค.
JoyDaheeCha Sep 26, 2025
7e9f737
refactor: ํด๋ž˜์Šค๋ช…์€ ์นด๋ฉœ์ผ€์ด์Šค๋กœ ํ•˜๋ผ
JoyDaheeCha Sep 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
155 changes: 105 additions & 50 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,41 +6,62 @@
## ๊ตฌ๋™๋ฐฉ์‹
1. `./gradlew build` ์‹คํ–‰์‹œ `/repos` ํ•˜์œ„์— `atdd-camping-kiosk` ํ”„๋กœ์ ํŠธ๊ฐ€ ํด๋ก ๋ฉ๋‹ˆ๋‹ค.

## ๐Ÿณ Kiosk ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰
## ๐Ÿณ ์บ ํ•‘ ์„œ๋น„์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰

### ๐Ÿš€ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ (๊ถŒ์žฅ)
### ๐Ÿš€ ํ†ตํ•ฉ ์„œ๋น„์Šค ๊ด€๋ฆฌ ์Šคํฌ๋ฆฝํŠธ ์‚ฌ์šฉ (๊ถŒ์žฅ)

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ ์ œ๊ณต๋˜๋Š” ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„ํŽธํ•˜๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์—์„œ ์ œ๊ณต๋˜๋Š” `manage-services.sh` ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ฉ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

#### ๋„์›€๋ง ํ™•์ธ

#### ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘
```bash
./start-kiosk.sh
./manage-services.sh help
```
- ์ด๋ฏธ์ง€ ์ž๋™ ๋นŒ๋“œ (`--build` ํฌํ•จ)
- Docker Compose๋กœ ์„œ๋น„์Šค ์‹œ์ž‘
- ํ—ฌ์Šค์ฒดํฌ ์ž๋™ ํ™•์ธ
- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ ‘์† ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ…Œ์ŠคํŠธ
- ์ƒ์„ธํ•œ ์ƒํƒœ ์ •๋ณด ์ถœ๋ ฅ

#### ์ƒํƒœ ํ™•์ธ
#### ๋ชจ๋“  ์„œ๋น„์Šค ๊ด€๋ฆฌ
```bash
./status-kiosk.sh
# ๋ชจ๋“  ์„œ๋น„์Šค ์‹œ์ž‘ (kiosk, admin, reservation)
./manage-services.sh start

# ๋ชจ๋“  ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ
./manage-services.sh status

# ๋ชจ๋“  ์„œ๋น„์Šค ์ค‘์ง€
./manage-services.sh stop

# ๋ชจ๋“  ์„œ๋น„์Šค ์žฌ์‹œ์ž‘
./manage-services.sh restart

# ๋ชจ๋“  ์„œ๋น„์Šค ๋กœ๊ทธ ํ™•์ธ
./manage-services.sh logs
```
- Docker Compose ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ
- ์ปจํ…Œ์ด๋„ˆ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ๋Ÿ‰ ๋ชจ๋‹ˆํ„ฐ๋ง
- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ ‘์† ํ…Œ์ŠคํŠธ (http://localhost:8080)
- ์ตœ๊ทผ ๋กœ๊ทธ (50์ค„) ์ถœ๋ ฅ
- ๋„คํŠธ์›Œํฌ ์ƒํƒœ ํ™•์ธ
- ์œ ์šฉํ•œ ๋ช…๋ น์–ด ๊ฐ€์ด๋“œ

#### ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ข…๋ฃŒ

#### ๊ฐœ๋ณ„ ์„œ๋น„์Šค ๊ด€๋ฆฌ

```bash
./stop-kiosk.sh
# ํ‚ค์˜ค์Šคํฌ ์„œ๋น„์Šค๋งŒ ์‹œ์ž‘
./manage-services.sh start kiosk

# ๊ด€๋ฆฌ์ž ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ
./manage-services.sh status admin

# ์˜ˆ์•ฝ ์„œ๋น„์Šค ์ค‘์ง€
./manage-services.sh stop reservation

# ํ‚ค์˜ค์Šคํฌ ๋กœ๊ทธ ํ™•์ธ
./manage-services.sh logs kiosk

# ๊ด€๋ฆฌ์ž ์„œ๋น„์Šค ์žฌ์‹œ์ž‘
./manage-services.sh restart admin
```
- Docker Compose ์„œ๋น„์Šค ์ค‘์ง€
- ์ปจํ…Œ์ด๋„ˆ ๋ฐ ๋ณผ๋ฅจ ์ œ๊ฑฐ
- ๋„คํŠธ์›Œํฌ ์ •๋ฆฌ
- ์™„์ „ํ•œ ์ •๋ฆฌ ์ƒํƒœ ๊ฒ€์ฆ

#### ์ฃผ์š” ๊ธฐ๋Šฅ
- ์ด๋ฏธ์ง€ ์ž๋™ ๋นŒ๋“œ (`--build` ํฌํ•จ)
- Docker Compose๋กœ ์„œ๋น„์Šค ์‹œ์ž‘
- ํ—ฌ์Šค์ฒดํฌ ์ž๋™ ํ™•์ธ
- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ ‘์† ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ํ…Œ์ŠคํŠธ
- ์ƒ์„ธํ•œ ์ƒํƒœ ์ •๋ณด ์ถœ๋ ฅ
- ์ปฌ๋Ÿฌ ์ถœ๋ ฅ์œผ๋กœ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ

### ๐Ÿ”ง ์ˆ˜๋™ Docker Compose ์‚ฌ์šฉ

Expand Down Expand Up @@ -69,6 +90,8 @@ docker compose -f infra/docker-compose.yml down -v

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์‹œ์ž‘๋˜๋ฉด ๋‹ค์Œ URL์—์„œ ์ ‘์†ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:
- **ํ‚ค์˜ค์Šคํฌ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜**: http://localhost:8080
- **๊ด€๋ฆฌ์ž ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜**: http://localhost:8081
- **์˜ˆ์•ฝ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜**: http://localhost:8082

## ๐Ÿงช ํ…Œ์ŠคํŠธ ์‹คํ–‰

Expand All @@ -77,9 +100,16 @@ docker compose -f infra/docker-compose.yml down -v
./gradlew test
```

### ํ‚ค์˜ค์Šคํฌ Smoke ํ…Œ์ŠคํŠธ๋งŒ ์‹คํ–‰
### ๊ฐœ๋ณ„ ์„œ๋น„์Šค ํ…Œ์ŠคํŠธ ์‹คํ–‰
```bash
# ํ‚ค์˜ค์Šคํฌ ํ…Œ์ŠคํŠธ๋งŒ ์‹คํ–‰
./gradlew test --tests "*kiosk*"

# ๊ด€๋ฆฌ์ž ํ…Œ์ŠคํŠธ๋งŒ ์‹คํ–‰
./gradlew test --tests "*admin*"

# ์˜ˆ์•ฝ ํ…Œ์ŠคํŠธ๋งŒ ์‹คํ–‰
./gradlew test --tests "*reservation*"
```

### ํ…Œ์ŠคํŠธ ๋ณด๊ณ ์„œ ํ™•์ธ
Expand All @@ -92,67 +122,92 @@ docker compose -f infra/docker-compose.yml down -v
์ „์ฒด ํ™˜๊ฒฝ์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ค์ •ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•:

```bash
# 1. ํ‚ค์˜ค์Šคํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹œ์ž‘
./start-kiosk.sh
# 1. ๋ชจ๋“  ์„œ๋น„์Šค ์‹œ์ž‘
./manage-services.sh start

# 2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ ํ™•์ธ
./status-kiosk.sh
# 2. ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ
./manage-services.sh status

# 3. ํ…Œ์ŠคํŠธ ์‹คํ–‰
./gradlew test

# 4. ์ •๋ฆฌ (์„ ํƒ์‚ฌํ•ญ)
./stop-kiosk.sh
./manage-services.sh stop
```

### ๊ฐœ๋ณ„ ์„œ๋น„์Šค๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ:

```bash
# ํ‚ค์˜ค์Šคํฌ๋งŒ ์‹œ์ž‘ํ•˜์—ฌ ํ…Œ์ŠคํŠธ
./manage-services.sh start kiosk
./gradlew test --tests "*kiosk*"
./manage-services.sh stop kiosk
```

### โœ… ์„ฑ๊ณต ๊ธฐ์ค€

ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์—ˆ๋‹ค๋ฉด ๋‹ค์Œ ์กฐ๊ฑด๋“ค์ด ๋ชจ๋‘ ๋งŒ์กฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค:

1. **๋กœ์ปฌ์—์„œ kiosk ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ธฐ๋™๋˜์–ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค**
- `./status-kiosk.sh` ์‹คํ–‰ ์‹œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ ์‘๋‹ต
- http://localhost:8080 ์ ‘์† ๊ฐ€๋Šฅ
1. **๋กœ์ปฌ์—์„œ ๋ชจ๋“  ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ธฐ๋™๋˜์–ด ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค**
- `./manage-services.sh status` ์‹คํ–‰ ์‹œ ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ ์‘๋‹ต
- http://localhost:8080 (ํ‚ค์˜ค์Šคํฌ) ์ ‘์† ๊ฐ€๋Šฅ
- http://localhost:8081 (๊ด€๋ฆฌ์ž) ์ ‘์† ๊ฐ€๋Šฅ
- http://localhost:8082 (์˜ˆ์•ฝ) ์ ‘์† ๊ฐ€๋Šฅ

2. **atdd-tests์˜ kiosk smoke ํ…Œ์ŠคํŠธ๊ฐ€ 200 ์‘๋‹ต์œผ๋กœ ํ†ต๊ณผํ•œ๋‹ค**
2. **atdd-tests์˜ ๋ชจ๋“  smoke ํ…Œ์ŠคํŠธ๊ฐ€ 200 ์‘๋‹ต์œผ๋กœ ํ†ต๊ณผํ•œ๋‹ค**
- `./gradlew test` ์‹คํ–‰ ์‹œ ๋ชจ๋“  ํ…Œ์ŠคํŠธ ํ†ต๊ณผ
- ํ‚ค์˜ค์Šคํฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‘๋‹ต์„ฑ ํ™•์ธ ์‹œ๋‚˜๋ฆฌ์˜ค ์„ฑ๊ณต
- ๊ฐ ์„œ๋น„์Šค๋ณ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‘๋‹ต์„ฑ ํ™•์ธ ์‹œ๋‚˜๋ฆฌ์˜ค ์„ฑ๊ณต

3. **๊ตฌ์„ฑ๊ณผ ์‹คํ–‰ ๋ฐฉ๋ฒ•์ด ์ž๋™ํ™”๋˜์–ด ์žˆ๊ณ , ์žฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค**
- ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ (`start-kiosk.sh`, `stop-kiosk.sh`, `status-kiosk.sh`) ์ œ๊ณต
- ํ†ตํ•ฉ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ (`manage-services.sh`) ์ œ๊ณต
- ์ด README.md ๋ฌธ์„œ๋ฅผ ํ†ตํ•œ ์™„์ „ํ•œ ์žฌํ˜„ ๊ฐ€๋Šฅ

### ๐Ÿ› ๏ธ ๋ฌธ์ œ ํ•ด๊ฒฐ

#### ํฌํŠธ ์ถฉ๋Œ ๋ฌธ์ œ
```bash
# 8080 ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํ”„๋กœ์„ธ์Šค ํ™•์ธ
lsof -i :8080

# ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ ํ›„ ์žฌ์‹œ์ž‘
./stop-kiosk.sh
./start-kiosk.sh
# ์‚ฌ์šฉ ์ค‘์ธ ํฌํŠธ ํ™•์ธ
lsof -i :8080 # ํ‚ค์˜ค์Šคํฌ
lsof -i :8081 # ๊ด€๋ฆฌ์ž
lsof -i :8082 # ์˜ˆ์•ฝ

# ๋ชจ๋“  ์„œ๋น„์Šค ์ค‘์ง€ ํ›„ ์žฌ์‹œ์ž‘
./manage-services.sh stop
./manage-services.sh start
```

#### ๋กœ๊ทธ ํ™•์ธ
```bash
# ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ํ™•์ธ
docker logs camping-kiosk -f
# ๋ชจ๋“  ์„œ๋น„์Šค ๋กœ๊ทธ ํ™•์ธ
./manage-services.sh logs

# ๊ฐœ๋ณ„ ์„œ๋น„์Šค ๋กœ๊ทธ ํ™•์ธ
./manage-services.sh logs kiosk
./manage-services.sh logs admin
./manage-services.sh logs reservation

# ์ „์ฒด ๋กœ๊ทธ ํ™•์ธ
docker logs camping-kiosk
# ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ํ™•์ธ (Docker ๋ช…๋ น์–ด ์ง์ ‘ ์‚ฌ์šฉ)
docker logs camping-kiosk -f
docker logs camping-admin -f
docker logs camping-reservation -f
```

#### ์ปจํ…Œ์ด๋„ˆ ์ ‘์†
```bash
# ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ์ ‘์†
# ๊ฐ ์ปจํ…Œ์ด๋„ˆ ๋‚ด๋ถ€ ์ ‘์†
docker exec -it camping-kiosk /bin/bash
docker exec -it camping-admin /bin/bash
docker exec -it camping-reservation /bin/bash
```

#### ํ…Œ์ŠคํŠธ ์‹คํŒจ ์‹œ
```bash
# ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ค€๋น„๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ
./status-kiosk.sh # ์ƒํƒœ ํ™•์ธ
./start-kiosk.sh # ์žฌ์‹œ์ž‘
./manage-services.sh status # ์ƒํƒœ ํ™•์ธ
./manage-services.sh restart # ์žฌ์‹œ์ž‘
Comment on lines +206 to +207
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ํ•ด๋‹น ํŒŒ์ผ์ด ๋ณด์ด์ง€ ์•Š๋„ค์š”!
์ด ํŒŒ์ผ๋“ค์˜ ์ž‘์—…๋„ clone๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ gradle task๋กœ ์˜ฎ๊ฒจ๋ณด๋Š”๊ฑด ์–ด๋–จ๊นŒ์š”?


# ๊ฐœ๋ณ„ ์„œ๋น„์Šค ์žฌ์‹œ์ž‘
./manage-services.sh restart kiosk

# ํ…Œ์ŠคํŠธ ์žฌ์‹คํ–‰
./gradlew clean test
Expand Down
56 changes: 33 additions & 23 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -39,41 +39,51 @@ tasks.test {

tasks.register("cloneRepository") {
group = "setup"
description = "Clone atdd-camping-kiosk repository"
description = "Clone required repositories"

doLast {
val reposDir = file("repos")
val targetDir = file("repos/atdd-camping-kiosk")

// repos ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
if (!reposDir.exists()) {
reposDir.mkdirs()
println("Created repos directory")
}

// ์ด๋ฏธ ํด๋ก ๋œ ๊ฒฝ์šฐ ์Šคํ‚ต
if (targetDir.exists()) {
println("Repository already exists at ${targetDir.absolutePath}")
return@doLast
}

// Git ํด๋ก  ์‹คํ–‰
val gitCloneCommand = listOf(
"git", "clone",
"https://github.com/next-step/atdd-camping-kiosk.git",
"repos/atdd-camping-kiosk"
// ํด๋ก ํ•  ์ €์žฅ์†Œ ๋ชฉ๋ก
val repositories = listOf(
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ฐ€์ ธ ์˜ฌ ๋ธŒ๋žœ์น˜ ๋ช…๋„ ๊ฐ ์„œ๋น„์Šค๋ณ„๋กœ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•ด์ค˜๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™๋„ค์š” :)

"https://github.com/next-step/atdd-camping-kiosk.git" to "repos/atdd-camping-kiosk",
"https://github.com/next-step/atdd-camping-admin.git" to "repos/atdd-camping-admin",
"https://github.com/next-step/atdd-camping-reservation.git" to "repos/atdd-camping-reservation"
)

val process = ProcessBuilder(gitCloneCommand)
.directory(projectDir)
.inheritIO()
.start()

val exitCode = process.waitFor()
if (exitCode == 0) {
println("Successfully cloned repository to repos/atdd-camping-kiosk")
} else {
throw GradleException("Failed to clone repository (exit code: $exitCode)")
repositories.forEach { (repoUrl, targetPath) ->
val targetDir = file(targetPath)

// ์ด๋ฏธ ํด๋ก ๋œ ๊ฒฝ์šฐ ์Šคํ‚ต
if (targetDir.exists()) {
println("Repository already exists at ${targetDir.absolutePath}")
return@forEach
}

// Git ํด๋ก  ์‹คํ–‰
val gitCloneCommand = listOf(
"git", "clone",
repoUrl,
targetPath
)

val process = ProcessBuilder(gitCloneCommand)
.directory(projectDir)
.inheritIO()
.start()

val exitCode = process.waitFor()
if (exitCode == 0) {
println("Successfully cloned repository to $targetPath")
} else {
throw GradleException("Failed to clone repository $repoUrl (exit code: $exitCode)")
}
}
}
}
Expand Down
8 changes: 8 additions & 0 deletions infra/db/init.sql
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
-- Create tables if not exist (so we can seed before apps start)
CREATE TABLE IF NOT EXISTS customers (
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์„œ๋น„์Šค์— ๋งž๊ฒŒ ํ•„์š”ํ•œ ํ…Œ์ด๋ธ” ์ถ”๊ฐ€ ๐Ÿ‘

id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
phone_number VARCHAR(32),
UNIQUE KEY uk_customers_email (email)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE IF NOT EXISTS products (
id BIGINT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
Expand Down
62 changes: 52 additions & 10 deletions infra/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,59 @@ services:
environment:
# Payment service configuration
- PAYMENTS_SECRET_KEY=test_sk_dummy
# Override admin service URL for Docker environment
- KIOSK_ADMIN_BASE-URL=http://camping-admin:8081
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/"]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
networks:
- kiosk-network
- atdd-net
depends_on:
- admin

admin:
build:
context: ..
dockerfile: infra/dockerfiles/Dockerfile-admin
image: camping-admin:latest
container_name: camping-admin
ports:
- "8081:8081"
environment:
# Admin service configuration
- SPRING_PROFILES_ACTIVE=docker
# Database configuration for shared DB
- SPRING_DATASOURCE_URL=jdbc:mysql://atdd-db:3306/atdd?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=secret
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
- SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.MySQL8Dialect
- SPRING_JPA_HIBERNATE_DDL_AUTO=none
Comment on lines +31 to +38
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„์„ ๋ฌถ์–ด์„œ ์žฌ์‚ฌ์šฉํ•ด๋ณผ ์ˆ˜ ์žˆ๋Š”๋ฐ ์ฐธ๊ณ ํ•ด๋ณด์„ธ์š” :)

https://docs.docker.com/reference/compose-file/fragments/

restart: unless-stopped
networks:
- atdd-net

reservation:
build:
context: ..
dockerfile: infra/dockerfiles/Dockerfile-reservation
image: camping-reservation:latest
container_name: camping-reservation
ports:
- "8082:8082"
environment:
# Reservation service configuration
- SPRING_PROFILES_ACTIVE=docker
# Database configuration for shared DB
- SPRING_DATASOURCE_URL=jdbc:mysql://atdd-db:3306/atdd?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul
- SPRING_DATASOURCE_USERNAME=root
- SPRING_DATASOURCE_PASSWORD=secret
- SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
- SPRING_JPA_DATABASE_PLATFORM=org.hibernate.dialect.MySQL8Dialect
- SPRING_JPA_HIBERNATE_DDL_AUTO=none
restart: unless-stopped
networks:
- atdd-net

networks:
kiosk-network:
driver: bridge
name: camping-kiosk-network
atdd-net:
name: atdd-net
external: true
Loading