๐ Railway ๋ฐฐํฌ ๊ฐ์ด๋
โ ๏ธ ์ฐธ๊ณ : ์์์
doll_gacha,dollgacha์ด๋ฆ์ ์ด์ ํ๋ก์ ํธ ์ฐธ์กฐ์ ๋๋ค. ์ค์ ํ๋ก์ ํธ์ ๋ง๊ฒ ๋ณ๊ฒฝํ์ธ์.
๐ ๊ฐ์
GitHub Push โ Railway๊ฐ ์ง์ ๊ฐ์ง โ Railway๊ฐ Dockerfile๋ก ์ด๋ฏธ์ง ๋น๋ โ ์๋ ๋ฐฐํฌ
Docker Hub๋ฅผ ๊ฑฐ์น์ง ์์. Railway๊ฐ GitHub ์ ์ฅ์๋ฅผ ์ง์ ๊ฐ์งํด์ ๋น๋ + ๋ฐฐํฌํ๋ ๊ฒ
๐ 1๋จ๊ณ: Railway ๊ฐ์ ๋ฐ ํ๋ก์ ํธ ์์ฑ
1-1. Railway ๊ฐ์
- https://railway.app ์ ์
- GitHub๋ก ๋ก๊ทธ์ธ (๊ถ์ฅ)
1-2. ์ ํ๋ก์ ํธ ์์ฑ
- New Project ํด๋ฆญ
- ๋น ํ๋ก์ ํธ ์์ฑ
๐ 2๋จ๊ณ: MySQL ์๋น์ค ์์ฑ
โ ๏ธ ์ค์: ์ฑ ์๋น์ค๋ณด๋ค MySQL ์๋น์ค๋ฅผ ๋จผ์ ๋ง๋ค์ด์ผ ํจ!
์ด์ 1 (ํ๊ฒฝ๋ณ์): doll-gacha ์๋น์ค์์ $
๊ฐ์ ๋ณ์๋ก MySQL์ ์ฐธ์กฐํ๋๋ฐ, MySQL ์๋น์ค๊ฐ ๋จผ์ ์กด์ฌํด์ผ ์ด ํ๊ฒฝ๋ณ์๋ค์ด ์์ฑ๋จ.
์ด์ 2 (Docker ํน์ฑ): Docker ์ด๋ฏธ์ง๋ โ์ฝ๋(์ ํ๋ฆฌ์ผ์ด์ )โ๋ง ํฌํจํ๋ฉฐ, ๋ฐ์ดํฐ ์ ์ฅ๊ณต๊ฐ์ ํฌํจํ์ง ์์. ์ปจํ ์ด๋๊ฐ ์ฌ์์๋๋ฉด ๋ด๋ถ ๋ฐ์ดํฐ๋ ์ฌ๋ผ์ง๋ฏ๋ก, ์์์ ์ธ DB๋ ๋ฐ๋์ ๋ณ๋ ์๋น์ค๋ก ๋ถ๋ฆฌํด์ผ ํจ.
- ํ๋ก์ ํธ์์ + New โ Database โ MySQL ์ ํ
- ์๋์ผ๋ก DB ์์ฑ๋จ (Online ์ํ๊ฐ ๋ ๋๊น์ง ๋๊ธฐ)
- MySQL ์๋น์ค ํด๋ฆญ โ Variables ํญ์์ ์๋ ์์ฑ๋ ํ๊ฒฝ๋ณ์ ํ์ธ:
| ๋ณ์๋ช | ์ค๋ช |
|---|---|
MYSQLHOST |
MySQL ํธ์คํธ ์ฃผ์ |
MYSQLPORT |
MySQL ํฌํธ ๋ฒํธ |
MYSQLDATABASE |
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๋ฆ |
MYSQLUSER |
์ฌ์ฉ์๋ช |
MYSQLPASSWORD |
๋น๋ฐ๋ฒํธ |
๐ก MySQL ์๋น์ค์ ํ๊ฒฝ๋ณ์๋ ๊ฑด๋ค ํ์ ์์. Railway๊ฐ ์๋์ผ๋ก ์์ฑ/๊ด๋ฆฌํจ.
๐ 3๋จ๊ณ: doll-gacha ์๋น์ค ์์ฑ (GitHub ์ฐ๋)
- ํ๋ก์ ํธ์์ + New โ GitHub Repo ์ ํ
- GitHub ์ ์ฅ์ (๋ณธ์ธ์ GitHub Repository) ์ฐ๊ฒฐ
- Railway๊ฐ ์๋์ผ๋ก Dockerfile์ ๊ฐ์งํ์ฌ ๋น๋ ์์
3-1. Deploy on Push ํ์ธ
- ์๋น์ค ํด๋ฆญ โ Settings ํญ
- Source ์น์ ์์ GitHub ์ ์ฅ์๊ฐ ์ฐ๊ฒฐ๋์ด ์๋์ง ํ์ธ
- Automatic Deploys ๋๋ Deploy on Push๊ฐ Enabled ์ํ์ธ์ง ํ์ธ
๐ 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 ๋๋ฉ์ธ ์์ฑ
- doll-gacha ์๋น์ค ํด๋ฆญ
- Settings ํญ โ Networking ์น์
- Generate Domain ํด๋ฆญ
xxx.up.railway.appํ์์ ๋๋ฉ์ธ ์์ฑ๋จ๐ก HTTPS๋ Railway๊ฐ ์๋์ผ๋ก ์ฒ๋ฆฌํจ. ๋ณ๋ ์ค์ ๋ถํ์!
๐ 6๋จ๊ณ: OAuth2 ๊ฐ๋ฐ์์ผํฐ ์ค์ โญ ํ์!
โ ๏ธ ์ค์: ๋ฐฐํฌ ํ ๋ฐ๋์ ์นด์นด์ค/๊ตฌ๊ธ ๊ฐ๋ฐ์์ผํฐ์์ Redirect URI๋ฅผ ์ถ๊ฐํด์ผ OAuth2 ๋ก๊ทธ์ธ์ด ์๋ํจ!
6-1. ์นด์นด์ค ๊ฐ๋ฐ์์ผํฐ ์ค์
- https://developers.kakao.com ์ ์ โ ๋ก๊ทธ์ธ
- ๋ด ์ ํ๋ฆฌ์ผ์ด์ โ ํด๋น ์ฑ ์ ํ
- ์นด์นด์ค ๋ก๊ทธ์ธ โ Redirect URI ์ค์
- ๋ค์ URI ์ถ๊ฐ:
https://xxx.up.railway.app/login/oauth2/code/kakao(xxx๋ Railway์์ ์์ฑ๋ ๋๋ฉ์ธ์ผ๋ก ๊ต์ฒด)
6-2. ๊ตฌ๊ธ ํด๋ผ์ฐ๋ ์ฝ์ ์ค์
- https://console.cloud.google.com ์ ์ โ ๋ก๊ทธ์ธ
- API ๋ฐ ์๋น์ค โ ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด
- ํด๋น OAuth 2.0 ํด๋ผ์ด์ธํธ ID ํด๋ฆญ
- ์น์ธ๋ ๋ฆฌ๋๋ ์
URI์ ๋ค์ ์ถ๊ฐ:
https://xxx.up.railway.app/login/oauth2/code/google(xxx๋ Railway์์ ์์ฑ๋ ๋๋ฉ์ธ์ผ๋ก ๊ต์ฒด)
๐ 7๋จ๊ณ: ๋ฐฐํฌ ํ ์คํธ
7-1. ์๋ ๋ฐฐํฌ ํ ์คํธ
git add .
git commit -m "ํ
์คํธ ์ปค๋ฐ"
git push
7-2. ๋ฐฐํฌ ํ์ธ
- Railway ๋์๋ณด๋ โ Deployments ํญ
- ๋น๋ ๋ก๊ทธ ํ์ธ
- โ ์ด๋ก์ = ์ฑ๊ณต
- โ ๋นจ๊ฐ์ = ์คํจ (๋ก๊ทธ ํ์ธ)
๐ ์ฒดํฌ๋ฆฌ์คํธ
- Railway ํ๋ก์ ํธ ์์ฑ
- Railway MySQL ์๋น์ค ์ถ๊ฐ
- Railway์์ GitHub Repo๋ก ์๋น์ค ์์ฑ
- Deploy on Push ํ์ฑํ ํ์ธ
- Railway ์๋น์ค ํ๊ฒฝ๋ณ์ ์ค์
- Railway ๋๋ฉ์ธ ์์ฑ
- 4๋จ๊ณ ํ๊ฒฝ๋ณ์์ APP_BASE_URL ์ถ๊ฐ
- ์นด์นด์ค ๊ฐ๋ฐ์์ผํฐ Redirect URI ์ถ๊ฐ
- ๊ตฌ๊ธ ํด๋ผ์ฐ๋ ์ฝ์ Redirect URI ์ถ๊ฐ
- GitHub ์ปค๋ฐ & ํธ์๋ก ์๋ ๋ฐฐํฌ ํ ์คํธ