サイドバーの壁紙
博主头像
tin博主等级

子の曰わく、我れ三人行なえば必ず我が師を得(う)。其の善き者を択びてこれに従う。其の善からざる者にしてこれを改む。

  • 累積執筆 72 記事
  • 累計作成 32 タグ
  • 累計受入 2 コメント

目 次CONTENT

記事目次

マイクロサービス(API)の開発+MySQL+Redis+Swagger

tin
tin
2023-03-16 / 0 コメント / 3 いいね! / 127 読み / 1,276 文字

1. IDEAでマイクロサービス(API)を構築

今回デモのマイクロサービス(API)の構造
image-1679111917302

各ソースファイルの詳細はリンクをクリックしてください

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';

実行結果
image-1679040801483

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の稼働確認
image-1679043573670

4. マイクロサービスをDockerに配置

4-1. デバッグ稼働確認(とりあえずホスト機で)

  • MySQLとRedisの接続IPportパスワードを確認した上で、デバッグしましょう
    image-1679044313029

  • ブラウザに「http://localhost:6001/swagger-ui.html#/」を入力
    image-1679044800701

  • 機能確認(データ追加OK)
    image-1679045558989

  • redisも確認
    image-1679047329305

4-2. 稼働確認問題ないため、mavenでjarを作成

image-1679054186736

4-3. jarをLinuxサーバにアップロード

image-1679056382087

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

image-1679056598236

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でアクセス

image-1679057646749

3
  • 3

コメント欄