Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
10
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

Organization

初心者がSpringアプリをHerokuにデプロイしてDB接続してみた

はじめに

勉強会でSpringアプリを作ったのでHerokuにデプロイしてみました。
作業の流れと参考になったリンクをまとめておきます。

環境

・Windows10(64bit)
・Java 1.8.0_231
・Spring framework 5.0.2
  ・thymeleaf 3.0.9
・MySQL 8.0.15
・Git 2.21.0
・heroku 7.24.1

事前準備

・Herokuアカウントの作成

・Heroku CLIのインストール

Heroku用にSpringアプリを設定

・SpringアプリのルートディレクトリにProcfileの追加

ProcfileではHerokuアプリの起動時に実行されるコマンドを指定できます。

Procfile
web: java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT target/*.war

・pom.xmlの編集

Procfileで設定したコマンドで起動できるように準備します。

まず、target/*.warでwarを指定したので、warを作成するように書きかえます。

pom.xml
<packaging>war</packaging>

また、webapp-runnerはHerokuで内部的にTomcatを実行してくれます。こちらも追記しましょう。

pom.xml
<build>
    <plugins>
        <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.github.jsimone</groupId>
                                <artifactId>webapp-runner</artifactId>
                                <version>9.0.19.0</version>
                                <destFileName>webapp-runner.jar</destFileName>
                            </artifactItem>
                        </artifactItems>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

Herokuにプロジェクトを作成&プッシュ

①コマンドプロンプトでSpringアプリのルートディレクトリまで移動する

$ cd C:\\git\\SpringApp

(小ネタ)なお、エクスプローラーのURL窓でcmdと打つと、そのパスでコマンドプロンプトを開けます。

②Herokuにログイン

$ heroku login

ブラウザでHerokuのログイン画面にとぶので、そのままログイン

③Herokuにデプロイ

Gitにコミット
※既にgit管理済みの場合は必要ありません
Herokuアプリ作成後に.git/configでURLにherokuが追加されているか確認してください

$ git init
$ git add .
$ git commit -m "Ready to deploy"

Heroku上にアプリを作成

$ heroku apps:create [プロジェクト名] 

コードをデプロイ

$ git push heroku master

これでHerokuアプリは起動しているはずです。Webページに飛びたい方は次のコマンドを。

$ heroku open

DBの設定

HerokuでMysqlを使うためにはクレカの登録が必要のようです。
Account settingsのBillingから登録してください。
ちなみにCleardbは5MB以下なら無料です https://elements.heroku.com/addons/cleardb#ignite

登録したらDBを作成します。

$ heroku addons:add cleardb

Herokuの環境変数を確認

$ heroku config

文字化け対策でCLEARDB_DATABASE_URLの末尾を変更
ユーザー名やパスワードを変えたければその値も変更

$ heroku config:set CLEARDB_DATABASE_URL="mysql://ユーザー名:パスワード@DBのホスト:3306/データベース名?reconnect=true&characterEncoding=UTF-8&characterSetResults=UTF-8"

ここで確認したCLEARDB_DATABASE_URLの@以降の値をアプリのDB接続URLに指定してください
(DBのホスト:3306/データベース名?reconnect=true&characterEncoding=UTF-8&characterSetResults=UTF-8)

もろもろ設定したらHerokuにデプロイ

$ git add .
$ git commit -m "Change connection URL"
$ git push heroku master

Herokuサーバーに一時ファイルを起きたい場合

アプリのアップロード機能などを作る際にローカルにファイルを一瞬置きたいときがあると思います。
その場合は/tmp/を指定してあげてください。

参考リンク

公式ドキュメント
https://devcenter.heroku.com/

Herokuを使って簡単にウェブページをインターネットで公開する方法
https://qiita.com/reoring/items/bca12aaa5f94b190a488

Heroku初心者がJavaで作成したWebアプリをGitHub連携でデプロイする時つまずいた4つのこと
https://qiita.com/ShandyGaffLover/items/0dad6ebf48d649aab761

herokuにlaravel5とMysqlの環境を整える
http://sizukutamago.hatenablog.com/entry/2016/10/21/heroku%E3%81%ABlaravel5%E3%81%A8Mysql%E3%81%AE%E7%92%B0%E5%A2%83%E3%82%92%E6%95%B4%E3%81%88%E3%82%8B

Heroku+ClearDBで文字化けしていた件
https://omiend.hatenablog.jp/entry/2015/02/17/211134

herokuのサーバー上に一時ファイルを作ったこと
http://ncastar.hatenablog.com/entry/2016/01/20/001858

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
10
Help us understand the problem. What are the problem?