首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Heroku上的Docker构建之前执行gradle构建?

如何在Heroku上的Docker构建之前执行gradle构建?
EN

Stack Overflow用户
提问于 2019-07-05 19:24:12
回答 1查看 331关注 0票数 1

当在github上推送提交时,我想在Heroku平台上部署一个用gradle构建的应用程序。

  • 我使用CLI成功地部署了docker映像,方法是在本地构建映像,然后部署映像。
  • 我使用"heroku-18“堆栈成功地部署了”github push“。每次提交之后,Heroku就会检测到我的项目是一级的,构建它并毫无问题地部署它。此方法不触发Docker。

现在,我想切换到“容器”堆栈,让Heroku构建我的Dockerfile,并在每次提交之后部署我的应用程序。正确检测到Dockerfile,但由于没有生成JAR,Dockerfile步骤失败。

如何触发Heroku端的JAR生成,以便Dockerfile能够将该JAR复制到容器中?

Heroku日志

代码语言:javascript
复制
=== Fetching app code
=== Building web (Dockerfile)
Sending build context to Docker daemon  50.69kBStep 1/11 : FROM openjdk:11-jre-slim
11-jre-slim: Pulling from library/openjdk
...
Step 4/11 : ADD build/libs/myapp-1.0-SNAPSHOT.jar /app/myapp.jar
ADD failed: stat /var/lib/docker/tmp/docker-builder545575378/build/libs/myapp-1.0-SNAPSHOT.jar: no such file or directory

heroku.yml

代码语言:javascript
复制
build:
  docker:
    web: Dockerfile

Dockerfile

代码语言:javascript
复制
FROM openjdk:11-jre-slim
VOLUME /var/log/my-app
ARG JAR_FILE
ADD build/libs/my-app-1.0-SNAPSHOT.jar /app/my-app.jar
RUN chgrp -R 0 /app
RUN chmod -R g+rwX /app
RUN chgrp -R 0 /var/log/my-app
RUN chmod -R g+rwX /var/log/my-app
CMD [ "-jar", "/app/my-app.jar" ]
ENTRYPOINT ["java"]
EXPOSE 8080
EN

回答 1

Stack Overflow用户

发布于 2020-08-08 03:43:53

也许你不能在你的Dockerfile之外这么做。

但您可以使用Docker多阶段构建,如下所示:

代码语言:javascript
复制
FROM adoptopenjdk/openjdk14-openj9:alpine as build
COPY . /opt/app/src
WORKDIR /opt/app/src
RUN ./gradlew clean bootJar

FROM adoptopenjdk/openjdk14-openj9:alpine-jre
COPY --from=build opt/app/app.jar /opt/app/app.jar
CMD ["java", "-server", "-XX:MaxRAM=256m", "-jar", "/opt/app/app.jar"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56908333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档