Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot 使用github向Heroku和Docker部署Spring boot应用程序_Spring Boot_Docker_Heroku_Spring Boot Maven Plugin - Fatal编程技术网

Spring boot 使用github向Heroku和Docker部署Spring boot应用程序

Spring boot 使用github向Heroku和Docker部署Spring boot应用程序,spring-boot,docker,heroku,spring-boot-maven-plugin,Spring Boot,Docker,Heroku,Spring Boot Maven Plugin,我有一个SpringBoot应用程序,我正在Heroku上托管,很快就会投入生产。 目前我正在使用Heroku的免费tier版本,但会在生产前购买标准付费tier 我面临的问题是,当与所有依赖项打包时,我的应用程序的jar大小超过200+M 我尝试了两种部署方式(现在都可以正常使用) 1)使用Heroku maven插件 2)从Git hub部署,以及Git LFS(托管jar文件,因为GitHub不允许文件大于100mb),Heroku需要jar 我的Procfile如下所示: web:j

我有一个SpringBoot应用程序,我正在Heroku上托管,很快就会投入生产。 目前我正在使用Heroku的免费tier版本,但会在生产前购买标准付费tier

我面临的问题是,当与所有依赖项打包时,我的应用程序的jar大小超过200+M

我尝试了两种部署方式(现在都可以正常使用)


1)使用Heroku maven插件


2)从Git hub部署,以及Git LFS(托管jar文件,因为GitHub不允许文件大于100mb),Heroku需要jar

我的Procfile如下所示:

web:java-jar目标/x-x-1.1.1.jar

注意:GitHub LFS免费层也有每月1GB的上传/下载限制,所以我现在坚持使用Heroku maven构建插件工具(因为我也达到了Git LFS限制)


在这两种情况下,我都必须上传大约200+M的内容,即使在重新打包并部署到Heroku时,我的源代码有了细微的变化

我对docker没有太多的知识和专业知识,我现在正在寻找的是一种使用docker和git hub部署到Heroku的方法,而无需每次上传打包的jar,docker将在部署之前使用maven构建jar文件

因此,如果有人知道这一点,或者可以指向如何实现这一点的指南,这将大大减少我的部署时间

弹簧启动版本: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
配置GitHub操作工作流

创建GitHubActions工作流(
/.github/workflows/main.yml
),配置管道以生成应用程序jar文件,并使用Heroku CLI将映像构建/推送到容器注册表中。
每次推送到
main
分支时,都会触发下面的工作流(如果愿意,您可以更改触发事件)

请注意GitHub Actions secrets
HEROKU_API_KEY
HEROKU_APP_NAME
,您需要使用HEROKU API密钥和HEROKU应用程序的名称进行相应配置


我已经捕获了以上所有内容,并提供了一个简单的GitHub repo

这正是我所需要的,我走错了方向,直接将docker映像部署到heroku,并使用heroku.yml文件,与之相同,过程变得更加繁忙
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