MSA, MSA, MSA... 나도 MSA 구조로 무언가 만들어보고 싶어서 글을작성한다.
테스트 환경
JDK 17버전
IDE: IntelliJ Community
DB Tool: DBeaver community
OS: windows10
Docker 필요
오늘의 목표
1. spring boot 프로젝트를 만들기
2. docker 파일 생성(spring boot, postgres)
3. docker 실행


빨간색으로 밑줄친 부분을 확인해주고 프로젝트를 생성하자

Main.java : spring boot 시작 파일
.gitignore : git에 올릴때 제외할 파일정보가 들어있다.
build.gradle.kts : 빌드 관련 설정(의존성 주입 등)
gradlew : 실제로 프로젝트 빌드 툴 (./gradlew build 명령어로 빌드 가능)
이렇게 프로젝트로 만들고 build.gradle.kts를 열어보면 아무것도 없다. 심지어 스프링 부트도 들어있지 않기 때문에 아래처럼 추가해주자
plugins {
id("java")
id("org.springframework.boot") version "3.1.0"
id("io.spring.dependency-management") version "1.1.0"
}
group = "org.gf160"
version = "1.0.0"
java.sourceCompatibility = JavaVersion.VERSION_17
repositories {
mavenCentral()
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-web")
compileOnly("org.projectlombok:lombok")
annotationProcessor("org.projectlombok:lombok")
//TEST
testImplementation("org.springframework.boot:spring-boot-starter-test")
testImplementation(platform("org.junit:junit-bom:5.9.1"))
testImplementation("org.junit.jupiter:junit-jupiter")
}
tasks.test {
useJUnitPlatform()
}

작성후 오른쪽 코끼리를 눌러서 설정이 적용될수 있도록 한다.
이렇게 설정된 Main은

이렇게 되어있는데 SpringApplication으로 만들어주어야한다.
package org.gf160;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Main {
public static void main(String[] args) {
SpringApplication.run(Main.class, args);
}
}



이렇게 설정해주면된다.

정상적으로 잘 뜬다.
Resource에 application.properties를 만들도록 하자.


그러면 application.properties 파일이 생성되었다.
간단하게 port만 설정해주자
server.port=8090

정상적으로 적용되었다.
오른쪽에 gradle 탭이 숨이있는데 그걸눌러 열어보자

"build" 를 더블클릭하면 이와같은 로그창이 뜬다.


build/libs/zerobase-1.0.0.jar이 생성된것을 알수있다.
뒤에 붙는 1.0.0 을 변경하고 싶으면 build.gradle.tks의 version을 바꾸면된다.
docker 디렉토리를 만들고 dockerfile을 만들자

이렇게 작성하고 저장!
FROM openjdk:latest
CMD ["./gradlew", "build"]
root 디렉토리에 docker-compose.yml을 만들자

version: '3'
services:
application:
container_name: zerobase
build:
context: ./docker
dockerfile: Dockerfile
ports:
- "8081:8081"
volumes:
- ./:/app
working_dir: /app
command: ["java", "-jar", "/app/build/libs/zerobase-1.0.0.jar"]
restart: always
아래에 Terminal을 열어서
docker-compose up 라고 치면 docker로 뜬다.


정상적으로 뜨는것을 확인 할 수있다.
이제 테스트를 해봐야하는데
ComController.java를 최상단에 만들자
package org.gf160;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
@Controller
public class ComContoller {
@GetMapping("/test")
public @ResponseBody String getTest(){
return "aa";
}
}
저장하고 다시 터미널로 가서 Ctrl+c로 종료하고
docker-compose up을 다시 쳐보자.
postman으로 호출하면 정상적으로 동작한다.
