docker、docker-compose を使用してマイクロサービスをデプロイする
1. Docker デプロイメントを使用する
1. 準備する
ここでは、Docker に Redis と nacos がインストールされて起動され、「ruoyi-gateway-prod.yml」ファイルが設定されています。
なお、設定ファイルにRedis、MySQL、nacosなどの接続情報がある場合は、IPアドレスをサーバーのパブリックネットワークアドレスまたはイントラネットアドレスに変更する必要があり、接続は失敗しません。
2.jarパッケージをアップロードする
ここでは、マイクロサービス版 Ruoyi のゲートウェイ サービスを例として、指定したディレクトリにアップロードします。
3. dockerfile を作成する
公式ドキュメント:
https://docs.docker.com/engine/reference/builder/
英語は少し難しいようですが、Ruoyi の中国語チュートリアルがここにあります
これはゾーイの文書アドレスです:
http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html#dockerfile
まず、イメージの構築に必要な基本イメージ、つまり jdk イメージを取得し、最初に jdk イメージを確認します。
docker search openjdk
jdk8の画像はこちら
docker pull openjdk:8-jre
以前に取得したことがありますが、最初は少し遅いかもしれません。
次に、dockerfile という名前のファイルを作成します。ファイル名はカスタマイズできます。通常は dockerfile です。内容は次のとおりです。
# 基础镜像
FROM openjdk:8-jre
# author
LABEL author="gan"
# 创建目录
RUN mkdir -p /home/jar
# 指定路径,后面运行的jar包就是在这个目录
WORKDIR /home/jar
# 挂载目录
VOLUME /home/jar
# 复制jar文件到路径,第一个是宿主机文件目录(dockerfile所在目录,不能是绝对路径),第二个是容器文件目录
COPY ./ruoyi-gateway.jar /home/jar/ruoyi-gateway.jar
# 启动网关服务jar包
ENTRYPOINT ["java","-jar","-Xms256M","-Xmx256M","ruoyi-gateway.jar"]
jarパッケージと同じディレクトリにアップロードします
複数のファイルをコンテナにコピーしたい場合は、これを行うことができます
3. イメージとコンテナを構築する
現在のディレクトリにイメージをビルドします。次の「.」は冗長ではないことに注意してください。コマンドは次のとおりです。
docker build -f /www/wwwroot/changjing/jar/gateway/dockerfile -t ruoyi-gateway .
説明する:
-f: dockerfile のパスが続きます。
-t: ビルドされたイメージにラベルを付けます。これは、ビルドされたイメージの名前です。
知らせ:
ビルド イメージを実行するコマンドは、dockerfile が配置されているディレクトリに存在する必要があります。dockerfile の「COPY」コマンドは、dockerfile からの相対ディレクトリにのみ存在でき、絶対ディレクトリの場合はエラーが報告されるためです。ホストはビルドに使用されます。
実行結果は以下の通りです。
ビルドは成功しました。以前にビルドに成功したことがあり、最初のビルドとは異なる可能性があります。
次にミラーを開始します。コマンドは次のとおりです。
docker run -d --name ruoyi-gateway -p 8010:8010 ruoyi-gateway
説明する:
–name: コンテナ名が続きます。これはここでのイメージ名と同じです。
-p: ホストとコンテナ間のポート マッピングが続きます。「:」の前はサーバー ポート、「:」の後ろは最後のポートです
。シータコンテナのイメージ名です
コンテナが実行されていることがわかります。
2. docker-compose を使用してデプロイする
docker-compose を使用したサービスのデプロイは docker デプロイに基づいており、docker-compose.yml ファイルを追加してサービス コンテナを統合的に管理し、すべてのサービス コンテナを開始または終了するコマンドを実装するため、docker-compose デプロイを使用するには、まず docker デプロイメントの使用方法を学ぶ必要があります。これは、初期段階では面倒ですが、後の段階では快適な、快適なデプロイメント方法です。
Ruoyi には関連するチュートリアルもあります。
http://doc.ruoyi.vip/ruoyi-cloud/cloud/dokcer.html#docker-compose
1. サービス用の jar パッケージと dockerfile を準備します
Ruoyi にゲートウェイの jar パッケージと dockerfile を保持していることに基づいて、認証の jar パッケージと dockerfile を追加します。認証の dockerfile はゲートウェイと同様で、次のようになります。
# 基础镜像
FROM openjdk:8-jre
# author
LABEL author="gan"
# 创建目录
RUN mkdir -p /home/jar
# 指定路径
WORKDIR /home/jar
# 挂载目录
VOLUME /home/jar
# 复制jar文件到路径,第一个是宿主机文件目录(dockerfile所在目录,不能是绝对路径),第二个是容器文件目录
COPY ./ruoyi-auth.jar /home/jar/ruoyi-auth.jar
# 启动系统服务
ENTRYPOINT ["java","-jar","-Xms256M","-Xmx256M","ruoyi-auth.jar"]
指定したフォルダーにアップロードする
2. docker-compose.yml ファイルを作成します。
公式 Web サイトの docker-compose.yml ファイルに対応する docker バージョン
私のDockerバージョンは次のとおりです。
したがって、docker-compose.yml のファイル バージョンは 3.8 です。
ファイルには、次のようにゲートウェイと認証関連のコンテンツのみが含まれています。
# 描述 Compose 文件的版本信息
version : '3.8'
# 定义服务,可以多个,每个服务中定义了创建容器时所需的镜像、参数、依赖等
services:
ruoyi-gateway: # 服务名称,跟构建镜像名称有关,假如image值为空,那么生成的镜像名称为“docker-compose.yml文件所在目录名称_ruoyi-gateway”,我放在jar目录,生成的镜像名称就是jar_ruoyi-gateway
image: ruoyi-gateway # 构建镜像名称
container_name: ruoyi-gateway # 容器名称
build:
context: ./gateway # 构建镜像的jar包和dockerfile文件所在的目录(相对于docker-compose.yml文件,我这里gateway目录是跟docker-compose.yml文件同一目录)
dockerfile: dockerfile # 构建网关镜像的文件名称
ports:
- "8010:8010" # 构建容器端口号,“:”前为宿主机端口,“:”后为容器端口
ruoyi-auth:
image: ruoyi-auth
container_name: ruoyi-auth
build:
context: ./auth
dockerfile: dockerfile
ports:
- "9200:9200"
ファイルが書き込まれたら、指定したディレクトリにアップロードします
3. docker-compose の共通コマンド
(1) フォアグラウンドにミラーを作成し、コンテナを起動します
java -jar コマンドを使用して jar パッケージを開始する場合と同様に、docker-compose.yml ファイルが配置されているディレクトリで実行することに注意してください。コマンドは次のとおりです。
docker-compose up
ウィンドウを閉じるとサービスが停止します。サービスを初めて起動するときに使用できます。サービス名は左端にあります。各サービスでログ エラーが表示されなければ、起動は成功しています。 。
Ctrl+Cで終了しますが、閉じても作成したイメージとコンテナはまだ存在します。
(2) バックグラウンドでミラーを作成し、コンテナを起動します
また、 docker-compose.yml ファイルが配置されているディレクトリでも実行する必要があります。コマンドは次のとおりです。
docker-compose up -d
docker-compose.yml ファイルのパスを指定することもできます。コマンドは次のとおりです。
docker-compose -f /www/wwwroot/changjing/jar/docker-compose.yml up -d
実行では各サービス起動のログは出力されません。ログを表示する必要があります。次のコマンドを使用して表示できます。
docker-compose logs
ruoyi-auth サービスのログのみを表示したい場合は、次のコマンドを使用できます。
docker-compose ログ ruoyi-auth
(3)、起動したコンテナを表示します
docker-compose.yml ファイルによって開始されたすべてのコンテナーを表示できます。コマンドは次のとおりです。
docker-compose ps
サービス名を指定することもできます。たとえば、ruoyi-auth が開始されているかどうかを確認するために実行します。コマンドは次のとおりです。
docker-compose ps ruoyi-auth
docker-compose.yml ファイルが配置されているディレクトリでのみ実行でき、他のディレクトリで実行するとエラーが報告されることに注意してください。
4. サービスの停止(削除を含む)
イメージを削除せずにすべてのサービス コンテナを停止して削除するには、コマンドは次のとおりです。
docker-compose down
イメージはまだ存在していますが、対応するコンテナーが削除されていることがわかります。
サービス コンテナに対応するイメージを表示するには、コマンドは次のとおりです。
docker-compose images
プロジェクト内のすべてのサービスのコンテナー、ネットワーク、およびミラーを停止して削除します。コマンドは次のとおりです。
docker-compose down --rmi all
このメソッドは、jar パッケージが再アップロードされた場合に停止するために使用できます。
5.サービスコンテナの起動
プロジェクト内のすべてのサービスのコンテナーを開始します。コマンドは次のとおりです。
docker-compose start
上記のコマンドにコンテナ名を追加して、指定したコンテナを起動することもできます。たとえば、ゲートウェイ コンテナのみを起動します。コマンドは次のとおりです。
docker-compose start ruoyi-gateway
6. サービスコンテナを閉じます
プロジェクト内のすべてのサービス コンテナを閉じます。コマンドは次のとおりです。
docker-compose stop
上記のコマンドにコンテナ名を追加して、指定したコンテナを閉じることもできます。たとえば、認証コンテナのみを閉じます。コマンドは次のとおりです。
docker-compose stop ruoyi-auth
7. サービスコンテナを再起動します
プロジェクト内のすべてのサービス コンテナを再起動します。コマンドは次のとおりです。
docker-compose restart
上記のコマンドにコンテナ名を追加して、指定したコンテナを再起動することもできます。たとえば、認証コンテナのみを再起動します。コマンドは次のとおりです。
docker-compose restart ruoyi-auth