Как развернуть приложение 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
Я не уверен, что именно это означает. Я чувствую, что проблема в том, что он ожидает найти что-то вtarget
dir, которого не существует, потому что я никогда не делал ничего подобного./mvnw package
в любом месте Dockerfile. Поэтому со второй попытки я добавил следующую строку
RUN ./mvnw package
в Dockerfile, непосредственно перед этими четырьмяCOPY
линии, но проблема не устранена, поэтому, возможно, я сбился с пути.
Любая помощь в том, как я могу это исправить?
1 ответ
Dockerfile, поставляемый с Quarkus Quickstart, предполагает, что вы уже скомпилировали свои исходные коды. Чтобы скомпилировать исходники в контейнер, мне пришлось изменить свой Dockerfile, как указано здесь . Кроме того, важно удалить это*
из.dockerignore
файл.