Help us understand the problem. What is going on with this article?

初心者が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アカウントの作成

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

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした