1. IDEAでマイクロサービス(API)を構築
今回デモのマイクロサービス(API)の構造
各ソースファイルの詳細はリンクをクリックしてください
- RedisConfig.java
- SwaggerConfig.java
- UserController.java
- User.java
- UserDTO.java
- UserMapper.java
- UserService.java
- DockerBootApplication.java
- UserMapper.xml
- application.properties
- pom.xml
2. MySQLを構築
MySQLの作業ディレクトリは今回は「/tinkouka/mysql」にしています。
2-1. MySQLコンテナを起動
docker run -p 3306:3306 \
--name mysql57 \
--privileged=true \
-v /tinkouka/mysql/conf:/etc/mysql/conf.d \
-v /tinkouka/mysql/logs:/logs \
-v /tinkouka/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123 \
-d mysql:5.7
2-2. 必要なテーブルを用意
docker exec -it mysql57 /bin/bash
mysql -uroot -p
create database db2023;
use db2023;
CREATE TABLE `t_user` (
`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
`username` VARCHAR(50) NOT NULL DEFAULT '' COMMENT 'user-name',
`password` VARCHAR(50) NOT NULL DEFAULT '' COMMENT 'password',
`sex` TINYINT(4) NOT NULL DEFAULT '0' COMMENT 'sex 0=female,1=male',
`deleted` TINYINT(4) UNSIGNED NOT NULL DEFAULT '0' COMMENT 'delete-flag,default 0=not delete,1=delete',
`update_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'update-time',
`create_time` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'create-time',
PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='user-table';
実行結果
3. Redisを構築
Redisの作業ディレクトリは今回は「/tinkouka/redis」にしています。
3-1. redis.confファイルを用意
①Redisの認証を有効にする。この設定はオプションです。ここ設定したら、Java APIのapplication.propertiesも合わせて設定すること。
requirepass 123
②Redisへの外部接続を許可する。このために、bind 127.0.0.1をコメントアウトする必要があります。この設定は必須です。
# bind 127.0.0.1
③Redisをデーモン化しない。
daemonize yesの設定は、Dockerコンテナ内での-dパラメータと競合するため、コメントアウトするかdaemonize noに設定する必要があります。
daemonize no
④Redisのデータ永続化を有効にする。appendonly yesを設定することで、RedisはAOFファイルに全てのコマンドを記録し、再起動時にこのファイルからデータを復元できます。この設定はオプションです。
appendonly yes
👇編集済みのconfigファイル
https://www.mina-isho.com/upload/2023/03/redis.conf
3-2. Redisコンテナを起動
docker run -p 6379:6379 --name redis608 \
--privileged=true \
-v /tinkouka/redis/redis.conf:/etc/redis/redis.conf \
-v /tinkouka/redis/data:/data \
-d redis:6.0.8 \
redis-server /etc/redis/redis.conf
Redisの稼働確認
4. マイクロサービスをDockerに配置
4-1. デバッグ稼働確認(とりあえずホスト機で)
-
MySQLとRedisの接続
IP
、port
、パスワード
を確認した上で、デバッグしましょう
-
ブラウザに「
http://localhost:6001/swagger-ui.html#/
」を入力
-
機能確認(データ追加OK)
-
redisも確認
4-2. 稼働確認問題ないため、mavenでjarを作成
4-3. jarをLinuxサーバにアップロード
4-4. Dockerfileを作成
👇Dockerfileの中身
# ベースイメージ:java
FROM openjdk:8
# 作者
MAINTAINER tinkouka
# VOLUME命令は、一時ファイルのディレクトリを「/tmp」として指定し、
# ホストの「/var/lib/docker」ディレクトリに一時ディレクトリを作成して、それをコンテナの「/tmp」にリンクしました。
VOLUME /tmp
# jarをコンテナに入れる、また「tin-docker.jar」にリネーム
ADD docker_boot-1.0-SNAPSHOT.jar tin-docker.jar
RUN bash -c 'touch /tin-docker.jar'
ENTRYPOINT ["java","-jar","/tin-docker.jar"]
# 6001ポート
EXPOSE 6001
4-5. Dockerfileでマイクロサービスのイメージを作成
cd /dokcer-demo
//Dockerfile の格納場所へ
docker build -t tin-docker:1.0 .
出来たイメージを確認
[root@localhost docker-demo]# docker images | grep tin-docker*
tin-docker 1.0 a713aaed285b 9 minutes ago 642MB
[root@localhost docker-demo]#
4-6. 作成したイメージでコンテナを起動
docker run -d -p 6001:6001 tin-docker:1.0
5. 構築結果確認
5-1. マイクロサービス・MySQL・Redisコンテナ群を確認
[root@localhost docker-demo]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6af8cd2fe9eb tin-docker:1.0 "java -jar /tin-dock…" 7 seconds ago Up 6 seconds 0.0.0.0:6001->6001/tcp, :::6001->6001/tcp cool_jennings
1cbb0cd14d29 redis:6.0.8 "docker-entrypoint.s…" 4 hours ago Up 4 hours 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp redis608
568602c8f622 mysql:5.7 "docker-entrypoint.s…" 5 hours ago Up 5 hours 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp mysql57
[root@localhost docker-demo]#
5-2. ブラウザで稼働確認
今回はdokcerを配置するマシンのIPでアクセス
コメント欄