Hi there ! ๐ย ๋ณธ Repository๋ ์คํฌ์ธ ๋ํ ์ด์๊ด๋ฆฌ ์๋ฃจ์ Sports-IT์ ๋ฐฑ์๋ ์ฝ๋๊ฐ ์ ์ฅ๋์ด ์๋ ๊ณณ์ ๋๋ค. ๐โโ๏ธย ๐โโ๏ธ
๋ณธ ํ๋ก์ ํธ๋ JAVA๋ฅผ ํ์ฉํ์ฌ SPRING BOOT ํ๋ ์์ํฌ๋ก ์ง์ฌ์ง RESTful API ์ฝ๋์ ๋๋ค ๐ค
๊ธฐ๋ณธ์ ์ผ๋ก Controller, Service, Repository๋ก ๊ตฌ์ฑ๋ Layered Architecture๋ก ์ง์ฌ์ง ์ฝ๋๋ก Member, Competition ๋ฑ ๊ฐ๊ฐ์ Domain์ ๋ฐ๋ผ ๊ฐ ๊ณ์ธต๋ค์ด ๊ตฌ๋ถ๋์ด ์์ต๋๋ค ๐
๋ณธ ํ๋ก์ ํธ์ ๊ฐ๋ฐํ๊ฒฝ์ ๊ฐ๊ด์ ์ผ๋ก ์ ๋ฆฌํ์๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค ๐ง
- OS : Ubuntu 22.04
- JAVA : openjdk 17.0.7
- MySQL : 8.0.32 (AWS RDS ์๋ฒ ์ฐ๋ ์ฌ์ฉ์ค)
- Docker : 24.0.2
- Spring Boot : 3.0.3
- Gradle : 7.6.1
1. Git clone
$ git clone https://github.com/PlayMaker-S/Sports-IT-API.git2. Build
$ cd SportsIT/
$ ./gradlew build
$ java -jar build.libs/SportsIT-0.0.1-SNAPSHOT
$ nohup java -jar build.libs/SportsIT-0.0.1-SNAPSHOT & [BG ์คํ]$ docker pull gmk0904/sports-it-api:latest
$ docker ps -q --filter name=sports-it-api | grep -q . && docker rm -f
\$(docker ps -aq --filter name=sports-it-api) [ํ์ฌ ๋์ผํ ์ด๋ฆ์ ์ปจํ
์ด๋๊ฐ ์คํ์ค์ด๋ผ๋ฉด ์ข
๋ฃ]
$ docker run -d -p 80:8080 -v {resource ๋๋ ํ ๋ฆฌ ์์น}:/src/main/resources --name sports-it-api gmk0904/sports-it-api:latest### MySQL ###
spring.datasource.url=jdbc:mysql://{mysql hostname:port/schema}
spring.datasource.username={username}
spring.datasource.password={password}
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
### JPA ###
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.platform=org.hibernate.dialect.MySQLDialect
### JWT ###
jwt.header=Authorization
jwt.prefix=Bearer
jwt.secret={jwt-secret}
jwt.token-validity-in-seconds=86400
### S3 ###
cloud.aws.credentials.accessKey={S3 Access-key}
cloud.aws.credentials.secretKey={S3 Secret-key}
cloud.aws.s3.bucket={S3 Bucket Name}
cloud.aws.region.static={S3 Region}
cloud.aws.stack.auto-=false
### OnePort ###
oneport.apikey={Oneport API-key}
oneport.secret={Oneport Secret-key}
oneport.imp.uid={Oneport imp-uid}- API ์ธ์คํด์ค ์คํ์ ์ํด ์๋์ ๊ฐ์ ๋ฆฌ์์ค๋ค์ด ํ์ํฉ๋๋ค. ์๋ ํ์ผ๋ค์ ์์ฑ/๋ค์ด๋ฐ์ src/main/resources ๋ฐ์ ์ ์ฅํด์ฃผ์ธ์.
- docker run ์ฌ์ฉ์ ๋ณ๋์ resources ๋๋ ํ ๋ฆฌ ์์ฑ ํ -v ์ต์ ์ผ๋ก ์์ฑํ resources ๋๋ ํ ๋ฆฌ ์์น๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์.
firebase-adminsjdk.json : FireStore๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ํค๋ฅผ ๋ฐ๊ธ
application.properties : ์์ ๋ด์ฉ์ ์์ฑํ์ฌ ์ ์ฅ
- Java Unit Test Framework์ธ JUnit5๋ฅผ ํ์ฉํ์ฌ ํ ์คํธ ์๋ํ๋ฅผ ๊ตฌ์ถํ์ต๋๋ค.
- ํ ์คํธ ์ฝ๋ ํ์ธํ๊ธฐ
- ์ง์ ํตํฉ/๋ฐฐํฌ๋ฅผ ์ํด Jenkins ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ์ต๋๋ค.
- CI/CD Pipeine
- Release Branch์ Merge ์ด๋ฒคํธ๊ฐ ๋ฐ์
- Jenkins ์๋ฒ๊ฐ GitHub webhook์ ๊ฐ์งํด Docker Image๋ฅผ ๋น๋
- API ์๋ฒ์์ Image๋ฅผ Pull ํ ๋ค ๋์ปค ์ปจํ ์ด๋๋ฅผ ์คํ
