從本月底開始,Heroku 將取消其免費層,因此我正在尋找一種將我的 Java 應用程式部署到其他地方的方法,即在 Render 上。Render 不像 Heroku 那樣原生支持 Java,但支持 Docker,即使我幾乎沒有經驗也應該沒問題。
那么,讓我們開始吧。我用 Quarkus 創建了一個 MVP,并將所有內容都推送到了 GitHub 上。Quarkus 附帶以下預配置的 Dockerfile。
FROM registry.access.redhat.com/ubi8/openjdk-17:1.14
ENV LANGUAGE='en_US:en'
COPY --chown=185 target/quarkus-app/lib/ /deployments/lib/
COPY --chown=185 target/quarkus-app/*.jar /deployments/
COPY --chown=185 target/quarkus-app/app/ /deployments/app/
COPY --chown=185 target/quarkus-app/quarkus/ /deployments/quarkus/
EXPOSE 8080
USER 185
ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"
然后,我創建了一個新的 Render 專案,連接 GitHub 存盤庫并為 Dockerfile ( ./src/main/docker/Dockerfile.jvm) 指定自定義路徑。
之后,構建開始并在不久之后失敗,并出現以下錯誤:
error: failed to solve: failed to compute cache key: failed to calculate checksum of ref ybv5ya8wywl2vxh03tp4kiw9y::xq421txz9uzdcqymi3ygmk6xb: failed to walk /home/user/.local/tmp/buildkit-mount4168277661/target/quarkus-app: lstat /home/user/.local/tmp/buildkit-mount4168277661/target/quarkus-app: no such file or directory
我不確定這到底是什么意思。我覺得問題在于它希望在target目錄中找到一些不存在的東西,因為我從未./mvnw package在 Dockerfile 中的任何地方做過類似的事情。因此,在第二次嘗試時,我添加了以下行
RUN ./mvnw package
在 Dockerfile 中,就在這四行之前COPY,但問題仍然存在,所以也許我偏離了軌道。
有關如何解決此問題的任何幫助?
uj5u.com熱心網友回復:
Quarkus 快速入門附帶的 Dockerfile 假定您已經編譯了源代碼。為了編譯容器中的源代碼,我必須更改我的 Dockerfile,如下所示。此外,*從.dockerignore檔案中洗掉它也很重要。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/528554.html
