Docker Compose は MySQL に接続するために SpringBoot プロジェクトをデプロイしますが、そこで遭遇する落とし穴があります。

Docker Compose は MySQL に接続するために SpringBoot プロジェクトをデプロイしますが、そこで遭遇する落とし穴があります。

先ほど、Docker を使用して SpringBoot プロジェクトを簡単にデプロイし、Dockerfile とは何かを紹介しました。如果是鏡像比較多的情況下如何一鍵交付呢?Docker-compose! Docker-compose を理解すると、後で K8s を理解しやすくなります。

1. docker-composeをインストールする

環境 CentOS 7

//docker-composeをダウンロード
curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

// ファイルに実行権限を追加します。そうしないと、ルートユーザーに権限がありません chmod +x /usr/local/bin/docker-compose

//インストールが成功したか確認する [root@SJS local]# docker-compose --version
docker-compose バージョン 1.27.3、ビルド 4092ae5d

一般的なコマンド

#関連コンテナの構築、作成、起動 docker-compose up -d

#関連するコンテナをすべて停止する docker-compose stop

#すべてのコンテナ情報を一覧表示する docker-compose ps

2. 展開手順

  1. 1. Dockerfile を使用してアプリケーション環境を定義します。これは通常、初期イメージの動作を変更する必要がある場合にのみ必要です。
  2. 2. docker-compose.ymlを使用して、デプロイするアプリケーションサービスを定義し、スクリプトを一度でデプロイできるようにします。
  3. 3. docker-compose upコマンドを使用して、すべてのアプリケーションサービスを一度にデプロイします。

3. SpringBootプロジェクトをデプロイする

プロジェクト全体

ここに画像の説明を挿入

1. Dockerfileを書く

java:8より
# データの保存と永続化のために、Docker コンテナ内にコンテナ ボリュームを作成します。VOLUME /tmp
#ファイルをコピーして解凍するために使用されます(COPY では解凍できません)
#現在の redpacket-backend-1.0.0-SNAPSHOT.jar を docker コンテナのルート ディレクトリにコピーします。ADD redpacket-backend-1.0.0-SNAPSHOT.jar app.jar
#実行プロセス中に app.jar ファイルを作成します RUN sh -c 'touch /app.jar'
環境変数JAVA_OPTS=""
# 渡されたパラメータを使用して Linux コマンドを実行し、jar パッケージを起動します # CMD との違いは、複数の CMD コマンドのうち最後の 1 つだけが有効になり、CMD は docker run 後にパラメータに置き換えられることです # ENTRYPOINT によって実行されたコマンドは追加され、ENTRYPOINT は上書きされません [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

2. docker-compose.ymlファイルを書く

この文書は3つの主要な部分に分かれています

プロジェクト: ymlファイル全体がプロジェクトです サービス: サービスノードはサービスです コンテナ: サービスはコンテナです

バージョン: '3.8'
サービス:
  #mysql サービス名 mysql:
    #使用した画像: mysql:5.7
    コマンド: --default-authentication-plugin=mysql_native_password
    ポート:
      -3306:3306
    環境:
      MYSQL_ROOT_HOST: '%'
      MYSQL_ROOT_パスワード: '123456'
      MYSQL_ALLOW_EMPTY_PASSWORD: 'いいえ'
      MYSQL_DATABASE: 'redpacket'
      MYSQL_USER: 'ルート'
      MYSQL_パスワード: '123456'
    #マウントする必要があるファイルボリューム:
      - /mydata/mysql/データ:/var/lib/mysql
      - /mydata/mysql/log:/var/log/mysql
      - /mydata/mysql/conf:/etc/mysql
    再起動: 常に
    ネットワーク:
      -テストネットワーク
  #SpringBoot プロジェクト サービス redpacket:
    コンテナ名: redpacket
    #指定されたディレクトリにDockerfileをビルドする
    建てる:
      コンテクスト: 。
      dockerfile: Dockerファイル
    依存:
      -MySQLについて
    ポート:
      - 「8090:8090」
    再起動: 常に
    ネットワーク:
      -テストネットワーク
ネットワーク:
  テストネットワーク:

3. ymlファイルのリンク名の変更に注意する

ここに画像の説明を挿入

4. ワンクリックでプロジェクトを開始

プロジェクトのdockerfile、docker-compose.yml、jarパッケージを同じディレクトリに置き、docker-composeを使用して起動します。

ここに画像の説明を挿入

成功した

ここに画像の説明を挿入

4. 落とし穴

使用中に Dockerfile を変更する場合は、一定要把之前的鏡像刪掉!そうしないと、docker-compose up コマンドが成功しても、以前のイメージは再構築されず、新しいコンテナが作成されるだけです。

参考記事:

https://mp.weixin.qq.com/s/iMl9bJ4SxUsNHBbiS5VUcw

https://docs.docker.com/compose/env-file/

https://blog.csdn.net/u011943534/article/details/81392993

これで、MySQL に接続するための SpringBoot プロジェクトの Docker Compose デプロイメントに関するこの記事は終了です。SpringBoot プロジェクトの Docker Compose デプロイメントに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQL8 ベースの docker-compose デプロイメント プロジェクトの実装
  • docker-compose を使用して MySQL を実行する方法
  • dockercompose を使用して springboot-mysql-nginx アプリケーションをビルドする
  • docker-compose でデプロイしたときに MySQL にアクセスできなくなる問題の簡単な分析
  • docker compose を使用して elk システムを構築する方法
  • docker-compose を使用して mongodb と mysql を構築する詳細なプロセス

<<:  テキストエリアタグはサイズ変更できず、マウスでドラッグすることもできません

>>:  Redo ログと Undo ログに基づく MySQL クラッシュ回復の分析

推薦する

MySQL のデータ型とスキーマの最適化の詳細な説明

現在、MySQL の最適化について学習しています。この記事では、データ型とスキーマの最適化について紹...

XHTML 入門チュートリアル: フレーム タグの使用

<br />フレーム構造により、ブラウザの 1 ページに複数の Web ページを同時に表...

ウェブページの右下隅に「いいね!」カード効果を実現するための CSS (サンプルコード)

効果 HTML を実装するには、まずクリーンな HTML ページを準備し、ノードを記述します。 &l...

JavaScript イベントバブリング、イベントキャプチャ、イベント委任の詳細な説明

1. イベントバブリング: JavaScript イベント伝播のプロセスでは、要素でイベントがトリガ...

vueはEle.me UIを使用してteambitionのフィルタリング機能を模倣します

目次問題の説明一般的な機能効果は次のとおりです。思考分析完全なコード要約する問題の説明Teambit...

JavaScript 中断要求に対するいくつかの解決策の詳細な説明

目次1 約束呼び出しチェーンを中断する約束を破る中止メソッドのラッピング - Axios の Can...

jQueryは広告を上下にスクロールする効果を実現します

この記事では、広告を上下にスクロールする効果を実現するためのjQueryの具体的なコードを参考までに...

Linux 上での MySQL データベースのリモート展開の詳細な手順

LinuxリモートMySQLデータベースの展開、参考までに、具体的な内容は次のとおりです。 1.0 ...

Centos での TCPWrappers アクセス制御の実装

1. TCP ラッパーの概要TCP Wrappers は TCP サービス プログラムを「ラップ」し...

HTMLのフォントがline-heightを指定しても垂直方向に中央揃えできない問題の解決方法を詳しく説明します

による写真に示されている効果を例に挙げてみましょう。明らかに、「次へ」というテキストを水平方向だけで...

Tinymce リッチテキストを使用して Vue のツールバーボタンをカスタマイズする実践

目次tinymce、tinymce ts、tinymce-vue 宣言ファイルをインストールするパッ...

React は antd のアップロード コンポーネントを使用してファイル フォーム送信機能を実装します (完全なコード)

私はプロジェクトを実行するために react を使い始めたばかりで、非常に未熟で完全な初心者です。私...

Nodejs 組み込み暗号化モジュールを使用してピアツーピアの暗号化と復号化を実現する詳細な説明

暗号化と復号化は、通信のセキュリティを確保するための重要な手段です。すでに多くの暗号化アルゴリズムが...

Dockerのローカルイメージ作成方法の分析

コンテナと呼ばれるものは、実際には親イメージに基づいて読み取りおよび書き込み可能なファイル階層を作成...

MySQL フルテキスト インデックス、ジョイント インデックス、Like クエリ、JSON クエリのうち、どれが高速ですか?

目次クエリの背景1. クエリをいいね2. JSON関数クエリ3. 共同インデックスクエリ4. 全文イ...