首先使用Heroku + Spring Boot进行部署

我试着将Spring Boot部署在Heroku上。
这是我为自己做的备忘录。

环境

    • Mac BigSur 11.1

 

    • Eclipse/maven

 

    • Spring Boot 2.4.5

 

    Java 1.8

Heroku是一个云平台。

    Heroku cliインストール
brew tap heroku/brew && brew install heroku
    git/commit
git init
git add xxxxxx
git commit -m "first commit."
    • heroku app

Herokuアプリ作成
ログインを問われるのでHerokuにログイン

heroku create <appname>

春季啟動

在Eclipse中创建项目。

    file構成はこんな感じ
image.png
    • Procfile

[app-name]は、pom.xml記載の下記部分。[artifactId]-[version].jarになる

web: java -Dserver.port=$PORT -jar target/[app-name].jar
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
    • system.properties

使用するruntimeバージョン

java.runtime.version=1.8
    • pom.xml

Webapp Runner をダウンロードするための Maven の設定

建议在构建工具中自动下载 Webapp Runner,虽然使用 Webapp Runner 并不是必需的,但由于应用程序的执行需要,这是必要的。

    maven-compiler-pluginは、java実行環境バージョンを合わせるための記載
  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>copy</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>com.heroku</groupId>
                  <artifactId>webapp-runner</artifactId>
                  <version>9.0.30.0</version>
                  <destFileName>webapp-runner.jar</destFileName>
                </artifactItem>
              </artifactItems>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

将应用程序部署到Heroku。

git push heroku master
    既にheroku上にアプリが存在している場合
heroku git:remote --app=<アプリ名>

Heroku PostgreSQL -> Heroku的PostgreSQL

po.png
po1.png
    pomに追加
 <dependency>
   <groupId>org.postgresql</groupId>
   <artifactId>postgresql</artifactId>
   <scope>runtime</scope>
 </dependency>
    Heroku上でCredential生成
po2.png
    Heroku CLIからDBを操作可能
heroku pg:psql [DB名] --app [アプリ名]
    • Heroku上とローカルでDBを切り替える

application.propertiesをローカル用とHeroku用に用意
Procfileにて、”-Dspring.profiles.active=heroku”を指定

web: java -Dspring.profiles.active=heroku -Dserver.port=$PORT -jar target/[アプリ名].jar
# デフォルトlocalに
spring.profiles.active=local
# for Local Deploy
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:[DBパス]
spring.datasource.username=[]
spring.datasource.password=[]
spring.h2.console.enabled=true
## for Heroku Deploy
spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.jsp

“spring.profiles.include无法使用了吗?”

其他备忘录

    下記エラーが発生が発生した場合
javax.management.InstanceAlreadyExistsException: org.springframework.boot:type=Admin,name=SpringApplication
    • Ecpliseで実行の構成で「JMXを使用可能にする」のチェックをオフに。

JMXの仕組みがよくわかってないので改めて追記

image.png
    Starter

Spring Boot的机制是将实现各项功能所需的库依赖集成在一起。

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

在上述示例中,Web相关的依赖关系被汇总,并包含了以下内容。

    • Spring Boot

 

    • Spring MVC

 

    • Tomcat

 

    • Bean Validation

 

    • Jackson

 

    SLF4J + Logback
  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.3</version>
    <relativePath />
  </parent>
    • アプリで使用するSpring Bootのバージョン

 

    上記は各依存ライブラリのバージョンを解決するparentの定義。
广告
将在 10 秒后关闭
bannerAds