diff --git a/README.md b/README.md index 24d274b..a4b3b17 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,21 @@ mysql> grant all on todoapp.* to todouser; - ToDoV1.war を手元のPCの tomcatの webappsにコピー - ブラウザから,http://localhost:8080/ToDoV1/ にアクセス +### :whale: `docker-compose`での実行 + + * 起動 + * `docker-compose up -d` + * `-d` を付けるとバックグラウンドで実行. + * `docker-compose logs -f` でバックグラウンドで出力されるログを確認できる. + * 終了 + * `docker-compose stop` で終了. + * `docker-compose down` でコンテナも削除する. + * `docker-compose` で起動している `mysql` に接続する. + * `mysql -u todouser -p -h 127.0.0.1 -P 13306` もしくは + * `docker exec -it todo_mysql bash` でコンテナに接続し, + * `todo_mysql` というコンテナ上で `bash` を起動する(`-it`はインタラクティブモード). + * その後,`bash`上で `mysql -u todouser -p` で接続する. + ## 設計 - メンバー,および,ToDo項目をCRUDする典型的なアプリケーション diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..21672b3 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,28 @@ +version: "3" +services: + todoapp: + image: tomcat:9-jdk11-corretto + container_name: tomcat_todoapp + ports: + - 8080:8080 + volumes: # ホストOSのディレクトリ:コンテナOSでのマウント先 + - ./build/libs:/usr/local/tomcat/webapps + environment: # Docker-compose で起動した時の接続先.application.propertiesも参照のこと. + DATASTORE: jdbc:mysql://db:3306/todoapp + db: + image: mysql:8.0 + container_name: todo_mysql + restart: always + ports: # ホストOSのポート番号:コンテナOSのポート番号 + - 13306:3306 + # ホストOSで mysql を起動しっぱなしにしておくため,ポート番号を分ける. + # 上の DATASTORE のポート番号は db のポート番号であるため,3306 で良い. + volumes: + - ./build/mysql/data:/var/lib/mysql # データ置き場 + - ./src/docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf # 設定ファイル + environment: + MYSQL_ROOT_PASSWORD: 'rootroot' + MYSQL_DATABASE: 'todoapp' + MYSQL_USER: 'todouser' + MYSQL_PASSWORD: 'todotodo' + TZ: 'Asia/Tokyo' \ No newline at end of file diff --git a/src/docker/mysql/my.cnf b/src/docker/mysql/my.cnf new file mode 100644 index 0000000..d17f22f --- /dev/null +++ b/src/docker/mysql/my.cnf @@ -0,0 +1,9 @@ +[mysqld] +character-set-server=utf8 + +[mysql] +default-character-set=utf8 + +[client] +default-character-set=utf8 + diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e07c446..56a29ac 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -2,9 +2,11 @@ server.port = 18080 # MySQLデータベース接続設定 -spring.datasource.url=jdbc:mysql://localhost:3306/todoapp spring.datasource.username=todouser spring.datasource.password=todotodo +## ${環境変数名:デフォルト値} で,ローカルで起動した場合(テスト時), +## Docker経由で起動した場合の接続先をそれぞれ設定する. +spring.datasource.url=${DATASTORE:jdbc:mysql://localhost:3306/todoapp} # Spring-JPA: DBのテーブルを自動作成してくれる機能 # create: 新規作成, update: なければ新規作成, create-drop: 新規作成し終了時に削除