๐Ÿš€ Railway ๋ฐฐํฌ ๊ฐ€์ด๋“œ

โš ๏ธ ์ฐธ๊ณ : ์˜ˆ์‹œ์˜ doll_gacha, dollgacha ์ด๋ฆ„์€ ์ด์ „ ํ”„๋กœ์ ํŠธ ์ฐธ์กฐ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ํ”„๋กœ์ ํŠธ์— ๋งž๊ฒŒ ๋ณ€๊ฒฝํ•˜์„ธ์š”.

๐Ÿ“‹ ๊ฐœ์š”

GitHub Push โ†’ Railway๊ฐ€ ์ง์ ‘ ๊ฐ์ง€ โ†’ Railway๊ฐ€ Dockerfile๋กœ ์ด๋ฏธ์ง€ ๋นŒ๋“œ โ†’ ์ž๋™ ๋ฐฐํฌ
Docker Hub๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š์Œ. Railway๊ฐ€ GitHub ์ €์žฅ์†Œ๋ฅผ ์ง์ ‘ ๊ฐ์ง€ํ•ด์„œ ๋นŒ๋“œ + ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ

๐Ÿ“Œ 1๋‹จ๊ณ„: Railway ๊ฐ€์ž… ๋ฐ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

1-1. Railway ๊ฐ€์ž…

  1. https://railway.app ์ ‘์†
  2. GitHub๋กœ ๋กœ๊ทธ์ธ (๊ถŒ์žฅ)

1-2. ์ƒˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

  1. New Project ํด๋ฆญ
  2. ๋นˆ ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ

๐Ÿ“Œ 2๋‹จ๊ณ„: MySQL ์„œ๋น„์Šค ์ƒ์„ฑ

โš ๏ธ ์ค‘์š”: ์•ฑ ์„œ๋น„์Šค๋ณด๋‹ค MySQL ์„œ๋น„์Šค๋ฅผ ๋จผ์ € ๋งŒ๋“ค์–ด์•ผ ํ•จ!

์ด์œ  1 (ํ™˜๊ฒฝ๋ณ€์ˆ˜): doll-gacha ์„œ๋น„์Šค์—์„œ $ ๊ฐ™์€ ๋ณ€์ˆ˜๋กœ MySQL์„ ์ฐธ์กฐํ•˜๋Š”๋ฐ, MySQL ์„œ๋น„์Šค๊ฐ€ ๋จผ์ € ์กด์žฌํ•ด์•ผ ์ด ํ™˜๊ฒฝ๋ณ€์ˆ˜๋“ค์ด ์ƒ์„ฑ๋จ.

์ด์œ  2 (Docker ํŠน์„ฑ): Docker ์ด๋ฏธ์ง€๋Š” โ€œ์ฝ”๋“œ(์• ํ”Œ๋ฆฌ์ผ€์ด์…˜)โ€๋งŒ ํฌํ•จํ•˜๋ฉฐ, ๋ฐ์ดํ„ฐ ์ €์žฅ๊ณต๊ฐ„์€ ํฌํ•จํ•˜์ง€ ์•Š์Œ. ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์žฌ์‹œ์ž‘๋˜๋ฉด ๋‚ด๋ถ€ ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ๋ผ์ง€๋ฏ€๋กœ, ์˜์†์ ์ธ DB๋Š” ๋ฐ˜๋“œ์‹œ ๋ณ„๋„ ์„œ๋น„์Šค๋กœ ๋ถ„๋ฆฌํ•ด์•ผ ํ•จ.

  1. ํ”„๋กœ์ ํŠธ์—์„œ + New โ†’ Database โ†’ MySQL ์„ ํƒ
  2. ์ž๋™์œผ๋กœ DB ์ƒ์„ฑ๋จ (Online ์ƒํƒœ๊ฐ€ ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐ)
  3. MySQL ์„œ๋น„์Šค ํด๋ฆญ โ†’ Variables ํƒญ์—์„œ ์ž๋™ ์ƒ์„ฑ๋œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ํ™•์ธ:
๋ณ€์ˆ˜๋ช… ์„ค๋ช…
MYSQLHOST MySQL ํ˜ธ์ŠคํŠธ ์ฃผ์†Œ
MYSQLPORT MySQL ํฌํŠธ ๋ฒˆํ˜ธ
MYSQLDATABASE ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„
MYSQLUSER ์‚ฌ์šฉ์ž๋ช…
MYSQLPASSWORD ๋น„๋ฐ€๋ฒˆํ˜ธ

๐Ÿ’ก MySQL ์„œ๋น„์Šค์˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” ๊ฑด๋“ค ํ•„์š” ์—†์Œ. Railway๊ฐ€ ์ž๋™์œผ๋กœ ์ƒ์„ฑ/๊ด€๋ฆฌํ•จ.


๐Ÿ“Œ 3๋‹จ๊ณ„: doll-gacha ์„œ๋น„์Šค ์ƒ์„ฑ (GitHub ์—ฐ๋™)

  1. ํ”„๋กœ์ ํŠธ์—์„œ + New โ†’ GitHub Repo ์„ ํƒ
  2. GitHub ์ €์žฅ์†Œ (๋ณธ์ธ์˜ GitHub Repository) ์—ฐ๊ฒฐ
  3. Railway๊ฐ€ ์ž๋™์œผ๋กœ Dockerfile์„ ๊ฐ์ง€ํ•˜์—ฌ ๋นŒ๋“œ ์‹œ์ž‘

3-1. Deploy on Push ํ™•์ธ


๐Ÿ“Œ 4๋‹จ๊ณ„: doll-gacha ์„œ๋น„์Šค ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • โญ ํ•ต์‹ฌ!

โš ๏ธ Railway ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ฐธ์กฐ ๋ฌธ๋ฒ•: $

doll-gacha ์„œ๋น„์Šค ํด๋ฆญ โ†’ Variables ํƒญ์—์„œ ๋‹ค์Œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์ถ”๊ฐ€:

ํ•„์ˆ˜ ํ™˜๊ฒฝ๋ณ€์ˆ˜

๋ณ€์ˆ˜๋ช… ๊ฐ’
SPRING_PROFILES_ACTIVE prod
SPRING_DATASOURCE_URL jdbc:mariadb://$:$/$?allowPublicKeyRetrieval=true&useSSL=false
SPRING_DATASOURCE_USERNAME $
SPRING_DATASOURCE_PASSWORD $

OAuth2 ํ™˜๊ฒฝ๋ณ€์ˆ˜ (์นด์นด์˜ค/๊ตฌ๊ธ€ ๋กœ๊ทธ์ธ์šฉ)

๋ณ€์ˆ˜๋ช… ๊ฐ’
JWT_SECRET_KEY your-jwt-secret-key-here (์ตœ์†Œ 32์ž ์ด์ƒ)
KAKAO_CLIENT_ID ์นด์นด์˜ค REST API ํ‚ค
KAKAO_CLIENT_SECRET ์นด์นด์˜ค Client Secret
GOOGLE_CLIENT_ID ๊ตฌ๊ธ€ ํด๋ผ์ด์–ธํŠธ ID
GOOGLE_CLIENT_SECRET ๊ตฌ๊ธ€ ํด๋ผ์ด์–ธํŠธ ๋ณด์•ˆ ๋น„๋ฐ€๋ฒˆํ˜ธ
APP_BASE_URL https://xxx.up.railway.app (6๋‹จ๊ณ„์—์„œ ์ƒ์„ฑ๋œ ๋„๋ฉ”์ธ)

โš ๏ธ ์ฃผ์˜์‚ฌํ•ญ

# โŒ ์ž˜๋ชป๋œ ์˜ˆ์‹œ (๋ณ€์ˆ˜๊ฐ€ ์น˜ํ™˜๋˜์ง€ ์•Š์Œ)
SPRING_DATASOURCE_URL=jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}

# โœ… ์˜ฌ๋ฐ”๋ฅธ ์˜ˆ์‹œ (Railway ๋ฌธ๋ฒ• + MariaDB ๋“œ๋ผ์ด๋ฒ„)
SPRING_DATASOURCE_URL=jdbc:mariadb://$:$/$?allowPublicKeyRetrieval=true&useSSL=false

๐Ÿ’ก MariaDB ๋“œ๋ผ์ด๋ฒ„ ์‚ฌ์šฉ ์‹œ: jdbc:mysql:// ๋Œ€์‹  jdbc:mariadb:// ์‚ฌ์šฉ!

๐Ÿ“Œ 5๋‹จ๊ณ„: Railway ๋„๋ฉ”์ธ ์ƒ์„ฑ

  1. doll-gacha ์„œ๋น„์Šค ํด๋ฆญ
  2. Settings ํƒญ โ†’ Networking ์„น์…˜
  3. Generate Domain ํด๋ฆญ
  4. xxx.up.railway.app ํ˜•์‹์˜ ๋„๋ฉ”์ธ ์ƒ์„ฑ๋จ

    ๐Ÿ’ก HTTPS๋Š” Railway๊ฐ€ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•จ. ๋ณ„๋„ ์„ค์ • ๋ถˆํ•„์š”!

    ๐Ÿ“Œ 6๋‹จ๊ณ„: OAuth2 ๊ฐœ๋ฐœ์ž์„ผํ„ฐ ์„ค์ • โญ ํ•„์ˆ˜!

    โš ๏ธ ์ค‘์š”: ๋ฐฐํฌ ํ›„ ๋ฐ˜๋“œ์‹œ ์นด์นด์˜ค/๊ตฌ๊ธ€ ๊ฐœ๋ฐœ์ž์„ผํ„ฐ์—์„œ Redirect URI๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ OAuth2 ๋กœ๊ทธ์ธ์ด ์ž‘๋™ํ•จ!

    6-1. ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž์„ผํ„ฐ ์„ค์ •

  5. https://developers.kakao.com ์ ‘์† โ†’ ๋กœ๊ทธ์ธ
  6. ๋‚ด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ โ†’ ํ•ด๋‹น ์•ฑ ์„ ํƒ
  7. ์นด์นด์˜ค ๋กœ๊ทธ์ธ โ†’ Redirect URI ์„ค์ •
  8. ๋‹ค์Œ URI ์ถ”๊ฐ€:
    https://xxx.up.railway.app/login/oauth2/code/kakao
    

    (xxx๋Š” Railway์—์„œ ์ƒ์„ฑ๋œ ๋„๋ฉ”์ธ์œผ๋กœ ๊ต์ฒด)

6-2. ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ ์ฝ˜์†” ์„ค์ •

  1. https://console.cloud.google.com ์ ‘์† โ†’ ๋กœ๊ทธ์ธ
  2. API ๋ฐ ์„œ๋น„์Šค โ†’ ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด
  3. ํ•ด๋‹น OAuth 2.0 ํด๋ผ์ด์–ธํŠธ ID ํด๋ฆญ
  4. ์Šน์ธ๋œ ๋ฆฌ๋””๋ ‰์…˜ URI์— ๋‹ค์Œ ์ถ”๊ฐ€:
    https://xxx.up.railway.app/login/oauth2/code/google
    

    (xxx๋Š” Railway์—์„œ ์ƒ์„ฑ๋œ ๋„๋ฉ”์ธ์œผ๋กœ ๊ต์ฒด)


๐Ÿ“Œ 7๋‹จ๊ณ„: ๋ฐฐํฌ ํ…Œ์ŠคํŠธ

7-1. ์ž๋™ ๋ฐฐํฌ ํ…Œ์ŠคํŠธ

git add .
git commit -m "ํ…Œ์ŠคํŠธ ์ปค๋ฐ‹"
git push

7-2. ๋ฐฐํฌ ํ™•์ธ

  1. Railway ๋Œ€์‹œ๋ณด๋“œ โ†’ Deployments ํƒญ
  2. ๋นŒ๋“œ ๋กœ๊ทธ ํ™•์ธ
  3. โœ… ์ดˆ๋ก์ƒ‰ = ์„ฑ๊ณต
  4. โŒ ๋นจ๊ฐ„์ƒ‰ = ์‹คํŒจ (๋กœ๊ทธ ํ™•์ธ)


๐Ÿ“ ์ฒดํฌ๋ฆฌ์ŠคํŠธ