22
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2019-12-16

はじめに

勉強会で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アカウントの作成
https://signup.heroku.com/

####・Heroku CLIのインストール
https://toolbelt.heroku.com/

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

22
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?