Как развернуть приложение Quarkus на Render.com?

Начиная с конца месяца, Heroku отменит свой бесплатный уровень, поэтому я ищу способ развернуть свои Java-приложения в другом месте, а именно на Render. Render не поддерживает Java изначально, как это делает Heroku, но поддерживает Docker, что должно быть хорошо, даже если у меня практически нет опыта работы с ним.

Итак, начнем. Я создал MVP с Quarkus и выложил все на 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

Я не уверен, что именно это означает. Я чувствую, что проблема в том, что он ожидает найти что-то вtargetdir, которого не существует, потому что я никогда не делал ничего подобного./mvnw packageв любом месте Dockerfile. Поэтому со второй попытки я добавил следующую строку

      RUN ./mvnw package

в Dockerfile, непосредственно перед этими четырьмяCOPYлинии, но проблема не устранена, поэтому, возможно, я сбился с пути.

Любая помощь в том, как я могу это исправить?

1 ответ

Dockerfile, поставляемый с Quarkus Quickstart, предполагает, что вы уже скомпилировали свои исходные коды. Чтобы скомпилировать исходники в контейнер, мне пришлось изменить свой Dockerfile, как указано здесь . Кроме того, важно удалить это*из.dockerignoreфайл.

Другие вопросы по тегам