きり丸アドベントカレンダー2020の4記事目です。
Gitpod上でDBの環境構築もできると、確認できることが増えます。DBも設定しましょう。
手順
.gitpod.Dockerfileを修正
gp init
で作成したDockerのイメージにはPostgreSQLは含まれていません。ですので、.gitpod.Dockerfile
のFROMを次に書き換える必要があります。
FROM gitpod/workspace-postgres
ワークスペースのリセット
.gitpod.Dockerfile
の修正を反映するためには、ワークスペースをリセットする必要があります。
アドベントカレンダー1日目でもリセットしているので、手順は同じです。
ちなみに、これですでにPostgreSQLが使える状態になりました。Dockerイメージの中身に、PostgreSQLの起動も含まれていますので、明示的に起動させる必要もありません。
また、ワークスペースを破棄しない限りは、DBは永続化されているようです。
以降はアドベントカレンダー用の記載
build.gradleのコメントを外す
3日目の記事では、DBの設定のせいで起動できませんでしたのでコメントにしました。そのコメントを外します。この段階で./gradlew bootRun
を実行すると失敗することを確認してみてください。
dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.flywaydb:flyway-core' implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.1.4' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.h2database:h2' runtimeOnly 'org.postgresql:postgresql' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' }
ディレクトリ構造をFlywayのデフォルト設定に従う
Flywayは下記ディレクトリ構造をもつ必要があります。
src/main/resources/db/migration
ディレクトリ構造だけをGitHubにpushするのは面倒くさいので、いったん適当なテーブルを作成するSQLを配備しましょう。
src/main/resources/db/migration/R__test.sql
CREATE TABLE TODOS( id int, user_id varchar );
SpringBootから接続する
まずは、設定ファイルをプロパティから、YAMLに変更します。
src/main/resources/application.properties
をsrc/main/resources/application.yml
にリネームするだけで大丈夫です。
その後、設定ファイルに下記を追記してください。
spring: datasource: driver-class-name: org.postgresql.Driver url: jdbc:postgresql://127.0.0.1:5432/postgres username: gitpod password:
これらを設定した後、./gradlew bootRun
を行うと、SpringBoot起動時に用意したSQLを実行します。
PostgreSQLに書き込まれていることの確認
まだJavaソース上で読み書きを行うロジックを書いていないので、Javaからは確認できません。今の段階では、psqlで確認する必要があります。
下記コマンドで、psqlへの接続を行います。
psql -h localhost -d postgres
psqlで接続したのち、用意したTODOSテーブルが存在することを確認してください。
SELECT * FROM todos;
もし、目的のテーブルが存在している場合は成功です。
ソースコード
アドベントカレンダー4日目。 github.com
終わりに
Gitpodだけでなく、SpringのDB接続も記載しているのでタイトルとは異なる内容が後半に記載されています。分けることも考えましたが、すでにアドベントカレンダー上では4日目であり、かなり牛歩な環境構築なので1記事にまとめました。
次回はこの段階でHerokuにアップロードします。アプリケーションの中身は作っていないのですが、この仕事の進め方は今後の参考になるはずですので、ぜひついてきてToDoアプリケーションを作っていただけるとうれしいです。
この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。
参考記事
Gitpod公式 www.gitpod.io
類似記事
きり丸アドベントカレンダー2020 adventar.org
5日目のアドベントカレンダーの記事 https://nainaistar.hatenablog.com/entry/2020/12/05/083000nainaistar.hatenablog.com