LoginSignup
2
2

More than 1 year has passed since last update.

docker-compose 下で Java + Spring Boot + PostgreSQL (Mybatis)を動かす

Last updated at Posted at 2021-06-18

内容

Docker docker-compose下でSpringBootを動かすことに挑戦した。
システムインテグレーターの現場でもDockerを使うことが議題に上がるようになっているのは
実際に見聞きするようになっている。

リソース

前提

Dockerが入っていること
docker-compose が入っていること
imageやコンテナはできる限り整理していることが望ましいかと思われる。
実行確認はマッキントッシュで行なっている。
都度 cd pwd ls などのコマンドを使用している。
参考
https://suin.io/537
https://github.com/IBMDeveloperTokyo/DojoBasicLab/tree/master/Lab1_ShellCommand/Lab1-1_CommandLineBasic

イントロダクション

Dockerが動いているのを確認し、余計なコンテナがあれば削除する。
リソースをターミナルから取得し、springmybatis内に移動する。

docker info
docker ps

docker rm -f postgres ← 削除系なので注意すること


git clone https://github.com/noikedan/springmybatis.git
cd springmybatis

注意点:gitが入ってない場合はダウンロードで今回のタスクは完了できます。

手順

基本これでいけるはずあとは
Google検索などで・・・

0.
application.ymlを
はじめてコミットを参考にapplication.properties に変更する。

内容は
mybatis.configuration.map-underscore-to-camel-case=true
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.url=jdbc:postgresql://postgres:5432/testdb
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.username= postgres
spring.datasource.password=admin
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=none

1.
jarを作成する。

./mvnw clean package -DskipTests

確認方法
・BUILD SUCCESS
・springmybatis/targetフォルダ内でjarができていることを確認する。
注意点
springmybatis内で行うこと。以下断りがない限り同様に行う。

2.
docker imageをビルドしてRUNを行う。

docker build ./ -t springbootapp

参考
Dockerfile
確認方法
springbootapp imageができていることを確認する。

docker image ls -a

3.
コンテナ同士をデプロイする。

docker-compose up

参考:docker-compose.yml
確認方法
エラーが出てないことを確認する。

4.
別ターミナルを立ち上げてデータベースが立ち上がっていることを確認する。
データベースの中に入る。

docker info
docker -ps
docker exec -it postgres bash
psql -h localhost -p 5432 -U postgres -d postgres
\c testdb

注意点
springmybatis内でなくてもオペレーション可能のはず。

5.
SQL文を流す。

CREATE TABLE IF NOT EXISTS staff ( id SERIAL, name VARCHAR(60), email VARCHAR(254) NOT NULL, status BOOLEAN NOT NULL, registration DATE NOT NULL );

INSERT INTO staff(name, email, status, registration) VALUES('中池', 'nakaike@example.com', 't', CURRENT_DATE); INSERT INTO staff(name, email, status, registration) VALUES('田中', 'tanaka@example.com', 't', CURRENT_DATE);

6.
下記アドレスにアクセルする。
http://localhost:8080/
確認方法
一覧画面表示

2
2
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
2
2