我有一个Spring-Boot应用程序,我正在Heroku上托管,很快就会开始生产。目前我正在使用Heroku的免费层版本,但将购买标准付费层之前生产。
我面临的问题是,当我的应用程序与所有依赖项打包时,其jar大小超过200+M。
我已经尝试了两种部署方式(现在两种方式都可以使用)
1)使用Heroku maven插件
2)从Git hub和Git-LFS(托管jar文件,因为GitHub不允许大于100MB的文件)进行部署,并且Heroku需要jar。
我的Procfile如下所示:
在这两种情况下,即使我的源代码在重新打包并部署到Heroku时稍有改动,我也必须上传200M左右。
我没有很多关于docker的知识和专长,我现在正在研究的是一种使用docker和git hub部署到Heroku的方法,而不是每次都上传打包的jar,docker将在部署之前使用maven构建jar文件!
因此,如果有人知道这一点,或者可以指向如何实现这一点的指南,这将大大减少我的部署时间!
Spring-Boot版本:2.2.5
maven-build-plugin:3.1.0
实际上,使用Docker应该可以解决您的问题,因为slug限制不适用于Heroku容器注册。您可以按照以下步骤使用GitHub操作来实现这一点。
创建Dockerfile
Dockerfile非常简单。在运行时绑定Heroku分配给您的端口是很重要的
FROM adoptopenjdk/openjdk11:latest
RUN mkdir -p /software
ADD target/x-x-1.1.1.jar /software/x-x-1.1.1.jar
CMD java -Dserver.port=$PORT $JAVA_OPTS -jar /software/x-x-1.1.1.jar
创建GitHubActions工作流(/.gitHub/workflows/main.yml
),配置管道来构建应用程序jar文件,并使用Heroku CLI将映像构建/推送到容器注册表中。
下面的工作流在每次推送到main
分支时都会被触发(如果愿意,您显然可以更改触发器事件)。
name: Build & Push to Heroku Docker Registry
on:
push:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Git Checkout
uses: actions/checkout@v1
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Build with Maven
run: mvn -B package --file pom.xml
- name: Heroku Container Registry login
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
run: heroku container:login
- name: Build and push
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
run: heroku container:push -a ${{ secrets.HEROKU_APP_NAME }} web
- name: Release
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_KEY }}
run: heroku container:release -a ${{ secrets.HEROKU_APP_NAME }} web
请注意GitHub操作秘密heroku_api_key
和heroku_app_name
,您需要使用Heroku API密钥和您的Heroku应用程序的名称相应地配置它们。
我已经捕获了上面的所有内容,并在这里提供了一个简单的GitHub repo
完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。
嘿,我已经尝试了几天了,我已经遍历了文档,我遵循了教程,当我试图将react应用程序部署到github页面时,我无法通过npm运行部署。我将npm称为运行构建,我将正确的url放置到package.json作为“主页”,我再次调用它并获得“部署”和“预部署”,我在节点模块中肯定有gh-pages,我的意思是我得到了所有我遵循的每一个步骤,每个教程都可以告诉我。我遇到了一个问题,内容如下: 错误:无
我想第一次使用docker发布我在spring boot中制作的应用程序。然而,在发布时出现了一个问题。 因此,我上传到conter的图像不显示。 以下是我采取的步骤,我将立即添加我使用gradle的步骤。 > 我将Docker插件下载到IntelliJ 我创建了一个Dockerfile,其中我放了: 音量 /tmp ARG JAR_文件 在终端中,我键入以下命令来构建项目: chmod 777
我已经构建了一个Springboot应用程序,其中包括AngLuar5。我有一个gradle构建脚本,它将angular文件加载到我的springboot项目中,这些文件位于springboot项目的resources/static下。当我启动我的应用程序时,angular的路由不再工作,我得到了 错误:无法匹配任何路由。URL段:“访问” 我的项目结构: 如果我打字 www.mysite.com
问题内容: 我正在尝试在Heroku上使用Flask开发我的第一个“大型”应用程序,并尝试将此处的基本教程与以下说明结合:https : //devcenter.heroku.com/articles/python与以下说明:http:// flask.pocoo.org/docs/patterns/packages/#larger- applications。它在本地与“先行启动”一起工作,但是
我已经尝试了许多配置来部署我的Restful Springboot2应用程序到heroku使用proplfile无济于事。我已经尝试了这里的一些建议/解决方案。 Procfile: Heroku日志:。 非常感谢任何对此的帮助。