Heroku는 더 이상 무료가 아니므로 Maven 및 Docker를 사용하여 Spring Boot 서비스를 Render.com에 배포하는 방법을 알려드리겠습니다.
4759 단어 javaherokudockerspringboot
해당 웹사이트를 방문하면 기본적으로 Java 애플리케이션을 지원하지 않지만 Docker는 지원한다는 것을 알 수 있습니다. 그러나 나와 같은 Docker 초보자라면 다음과 같이 생각할 것입니다. 좋아, 그건 문제가 아니야. 인터넷에서 Dockerfile을 가져오고 이를 사용하여 내 서비스를 배포합니다. 따라서 Google로 이동하여 Spring Boot Dockerfile을 검색하면 다음과 같은 결과를 얻을 수 있습니다.
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
당신은 말할 것입니다. 그런 다음 코드를 푸시하면 Render가 변경 사항을 감지하고 로그를 확인하고… 오류가 발생합니다.
그래서 여기서 무슨 일이 일어났습니까? 앞서 언급했듯이 Render는 Java 응용 프로그램을 지원하지 않으며 이 Dockerfile은 호스트에 Maven이 설치되어 있고 실행했다고 가정합니다
mvn install
.그래서 다음에 무엇을 할 수 있습니까? 이 문제를 해결하는 방법에는 두 가지가 있습니다.
1. Maven Docker 이미지 사용
Render에는 Maven이 설치되어 있지 않으므로 다음과 같이 컨테이너에 설치해야 합니다.
FROM maven:3.8.6-jdk-8-slim AS MAVEN_TOOL_CHAIN
COPY pom.xml /tmp/
COPY src /tmp/src/WORKDIR /tmp/
RUN mvn package FROM openjdk:8-jdk-alpine
COPY --from=MAVEN_TOOL_CHAIN /tmp/target/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
그리고 그게 다야. 이 Dockerfile을 푸시하면 애플리케이션이 시작됩니다.
2. Maven 래퍼 사용
두 번째 방법의 경우 로컬 컴퓨터에 Maven을 설치하고 프로젝트의 루트에서 다음 명령을 실행해야 합니다.
mvn -N wrapper:wrapper
프로젝트에 다음 파일이 추가되었음을 알 수 있습니다.
이 명령은 Maven을 프로젝트에 임베드합니다. 이렇게 하면 설치하지 않고도 Maven 명령을 실행할 수 있습니다.
.gitignore
파일에 해당 파일을 포함하지 않도록 하세요.이제 다음과 같이 Dockerfile을 수정해야 합니다.
FROM openjdk:8-jdk-alpine as build
WORKDIR /workspace/app
COPY mvnw .
COPY .mvn .mvn
COPY pom.xml .
COPY src src
RUN ./mvnw install -DskipTests
RUN mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar)
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG DEPENDENCY=/workspace/app/target/dependency
COPY --from=build ${DEPENDENCY}/BOOT-INF/lib /app/lib
COPY --from=build ${DEPENDENCY}/META-INF /app/META-INF
COPY --from=build ${DEPENDENCY}/BOOT-INF/classes /app
ENTRYPOINT ["java","-cp","app:app/lib/*","com.package.Application"]
"com.package.Application"
를 패키지 및 기본 클래스 이름으로 바꾸고 Kotlin 애플리케이션인 경우 Kt
와 같이 접미사를 "com.package.ApplicationKt"
로 추가하세요.변경 사항을 푸시하면 렌더에서 애플리케이션이 실행되는 것을 볼 수 있습니다.
이것이 Render.com에 Spring Boot를 배포하는 데 필요한 전부입니다.
이 블로그 게시물에서 제시한 Dockerfile을 최적화할 수 있는 더 많은 방법이 있다고 확신하지만 언급했듯이 저는 아직 Docker 전문가가 아니므로 의견 섹션에 제안 사항을 자유롭게 게시하십시오.
도움이 되셨길 바라며, 읽어주셔서 감사합니다.
Reference
이 문제에 관하여(Heroku는 더 이상 무료가 아니므로 Maven 및 Docker를 사용하여 Spring Boot 서비스를 Render.com에 배포하는 방법을 알려드리겠습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/lucasleon/heroku-is-not-free-anymore-so-ill-teach-you-how-to-deploy-your-spring-boot-services-to-rendercom-with-maven-and-docker-aca텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)