해당 글은 spring,java,docker 에 대한 기본적인 지식이 있다는 전제하에 작성했습니다
intellij 혹은 https://start.spring.io/ 사이트에서 lombok,spring web 선택
@Data
@AllArgsConstructor
public class Posts {
private String title;
private String content;
}
@RestController
@RequestMapping("/api/v1/posts")
public class PostController {
private static final List<Posts> POSTS = List.of(
new Posts("title1", "content1"),
new Posts("title2", "content2")
);
@GetMapping
public List<Posts> getPosts() {
return POSTS;
}
}
/api/v1/posts 에 접속하면 2개 임시 Posts 리턴
./gradlew build
혹은 intellij build 버튼
빌드 성공하면
프로젝트명/build/libs 경로에
프로젝트명-0.0.1-SNAPSHOT.jar 파일이 생김
잘 돌아가는지 테스트
java -jar build/libs/render-0.0.1-SNAPSHOT.jar
(java -jar build/libs/프로젝트명-0.0.1-SNAPSHOT.jar)
로컬 접속
localhost:8080
localhost:8080/api/v1/posts
(이전에 작성했던 api/v1/posts 엔드포인트에 데이터가 정상적으로 나오는지 확인)
FROM azul/zulu-openjdk:17-latest
VOLUME /tmp
COPY build/libs/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
docker build -t test . // test 라는 이름으로 image 생성
docker build --platform linux/amd64 -t test .
MAC 사용중이라면 도커 이미지 빌드 시 운영체제가 달라 호환이 안됨
#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test latest ddc1fcd87442 About an hour ago 415MB
여기서는 Docker Repository 이름을 render 로 설정
비공개 Repository 로 생성할 경우 도커 URL 을 Render 사이트에 업로드시 따로 설정해야 됩니다
https://render.com/docs/deploy-an-image#managing-credentials
docker tag test:latest 도커아이디/render:host
docker tag [기존 이미지 이름]:[기존 태그] [Docker Hub 사용자 이름]/[새로운 이미지 이름]:[새로운 태그]
docker image
REPOSITORY TAG IMAGE ID CREATED SIZE
도커아이디/render host ddc1fcd87442 About an hour ago 415MB // 새롭게 생성 됨
test latest ddc1fcd87442 About an hour ago 415MB
docker push 도커아이디/render:host
image URL 부분에 해당 도커 이미지가 올라간 Repository URL 입력
abcd1234/render:host
[도커계정]/[레포지토리명]:[태그]
원하는 이름을 설정 후 지역 선택 (그나마 가까운 싱가포르로 함)
그리고 Instance Type FREE 선택
도메인이 뜨고
서버가 켜질때까지 기다리고 접속하면
정상적으로 들어가짐
끝!
느리지만 간단한 토이 프로젝트 호스팅용으로는 충분 하다고 생각합니다.