π [APEX-F1] AWS EC2 κΈ°λ° νμ€ν λ컀 λ°°ν¬ μμ½
1. μΈνλΌ νλ‘λΉμ λ (AWS EC2)
-
t2.micro(Ubuntu) μΈμ€ν΄μ€λ₯Ό μμ±νκ³ , μμ μ μΈ λΉλλ₯Ό μν΄ Swap λ©λͺ¨λ¦¬λ₯Ό μ€μ νμ΅λλ€. -
보μ κ·Έλ£Ή(Security Group)μ ν΅ν΄ μΈλΆ μ μμ μν 80(νλ‘ νΈμλ), 8080(λ°±μλ API) ν¬νΈλ₯Ό κ°λ°©νμ΅λλ€.
2. λ°±μλ (Spring Boot + PostgreSQL + Redis) λ°°ν¬
-
docker-compose.yml(곡ν΅)κ³Όdocker-compose.override.yml(μ΄μ/λ‘컬 νκ²½ λΆλ¦¬)μ νμ©νμ¬ νλ‘νμ λν μν€ν μ²λ₯Ό ꡬμ±νμ΅λλ€. -
.envνμΌμ ν΅ν΄ λ°μ΄ν°λ² μ΄μ€ λΉλ°λ²νΈμ μΈλΆ μ€μ κ°λ€μ μμ νκ² μ£Όμ νμ΅λλ€.
3. νλ‘ νΈμλ (Next.js) λ°°ν¬
-
standaloneλΉλ μ΅μ μ μ μ©νμ¬, 무거μ΄node_modulesμμ΄ κ°λ³κ³ λΉ λ₯Έ μ΄μ μ μ© λ컀 μ΄λ―Έμ§λ₯Ό ꡬμΆνμ΅λλ€. -
λ°±μλμ νλ‘ νΈμλμ
docker-composeλ₯Ό λΆλ¦¬νμ¬ μλ‘ λ 립μ μΌλ‘ λ°°ν¬ λ° κ΄λ¦¬κ° κ°λ₯ν λ§μ΄ν¬λ‘μλΉμ€ ννλ₯Ό κ°μ·μ΅λλ€.
π₯ νΈλ¬λΈμν νμ΄λΌμ΄νΈ (μ΄μ μμ½)
π₯ μ΄μ 1: Tailwind CSS v4μ Alpine Linux μΆ©λ (νλ‘ νΈμλ λΉλ)
-
νμ: λ컀 νκ²½μμ Next.jsλ₯Ό λΉλν λ, Tailwindμ Rust κΈ°λ° μμ§(Oxide) λ°μ΄λ리λ₯Ό μ°Ύμ§ λͺ»νλ μλ¬(
ERESOLVE,Cannot find module)κ° μ§μμ μΌλ‘ λ°μνμ΅λλ€. -
μμΈ: κ°λ²Όμ΄
alpine리λ μ€(muslλΌμ΄λΈλ¬λ¦¬)μ μ΅μ Tailwind v4 ν°λ³΄ν© λΉλ νκ²½ κ°μ νΈνμ± λ²κ·Έ, 그리κ³package-lock.jsonμ OS μΊμ± λ¬Έμ μμ΅λλ€. -
ν΄κ²°: κΈ°λ³Έ λ² μ΄μ€ μ΄λ―Έμ§λ₯Ό
node:18-slim(λ°λΉμ κ³μ΄)μΌλ‘ λ³κ²½νκ³ , λ컀 μμμnpm installμ μλ‘ λλ € ν΄λΉ OSμ λ§λ λ°μ΄λ리λ₯Ό μ§μ λ€μ΄λ‘λνλλ‘ μ λνμ¬ ν΄κ²°νμ΅λλ€.
π₯ μ΄μ 2: νλ‘ νΈμλ λ컀μ νκ²½λ³μ(URL) λλ½
-
νμ: λμ»€λ‘ λμ΄ νλ‘ νΈμλμμ APIλ₯Ό νΈμΆν λ, μ§μ ν΄ λ EC2 νΌλΈλ¦ IPκ° μλ λ‘컬νΈμ€νΈ μ£Όμλ‘ μμ²μ΄ λ μκ°λ λ¬Έμ κ° λ°μνμ΅λλ€.
-
μμΈ: Next.jsμ
NEXT_PUBLIC_νκ²½ λ³μλ λ°νμ(μλ² μ€ν μ)μ΄ μλ **λΉλ νμ(Build-time)**μ μ½λμ μ½μ λμ΄μΌ νλλ°, λ컀 μ€ν μμ μλ§ λ³μλ₯Ό λ겨주μκΈ° λλ¬Έμ λλ€. -
ν΄κ²°: νλ‘ νΈμλ
docker-compose.ymlμbuild.argsμμ±μ ν΅ν΄ λΉλνλ μκ°μNEXT_PUBLIC_API_URLκ°μ λͺ μμ μΌλ‘ μ£Όμ νμ¬ ν΄κ²°νμ΅λλ€.
π₯ μ΄μ 3: λ°±μλ CORS (403 Forbidden) μ°¨λ¨
-
νμ: νλ‘ νΈμλμμ νμκ°μ API λ±μ νΈμΆνλ©΄ 403 CORS μλ¬κ° λ°μνμ΅λλ€.
-
μμΈ: λ°±μλ
CorsConfigurationSourceμ νμ©λ λλ©μΈμ΄localhostλ‘ κ³ μ λμ΄ μμκ³ , λ컀 λͺ λ Ήμ΄(--env-file)λ‘ μ λ¬ν νκ²½λ³μκ° μ€μ 컨ν μ΄λ λ΄λΆμ μ€νλ§ λΆνΈ μ ν리μΌμ΄μ κΉμ§ λλ¬νμ§ μμμ΅λλ€. -
ν΄κ²°: CORS μ€μ μ νκ²½λ³μν νμ¬ μ μ°νκ² λ§λ€κ³ (
[APEX-59]),docker-compose.override.ymlμenv_file:μ΅μ μ μ§μ λͺ μνμ¬ μ»¨ν μ΄λ λ΄λΆλ‘ μ€μ κ°μ μ±κ³΅μ μΌλ‘ μ£Όμ νμ΅λλ€.