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 クラッシュ回復の分析

推薦する

Vue はコンポーネント間の通信をどのように実装しますか?

目次1. 父と息子のコミュニケーション1.1 親コンポーネント --> 子コンポーネント1.2...

Reactにおけるキーの役割の詳細な説明

目次質問: ボタンをクリックすると、スパンの色が赤に変わりますか?上記の問題を分析します。 2番目の...

MySQL で 2 つのデータベース テーブル構造を比較する方法

開発およびデバッグのプロセスでは、新しいコードと古いコードの違いを比較する必要があります。比較には、...

Linuxで$を#に変更する方法

このシステムでは、# 記号は root ユーザーを表し、$ 記号は通常のユーザーを表します。では、ど...

MySQLインデックスが失敗するいくつかの状況の詳細な分析

1. 先頭のあいまいクエリではインデックスを使用できません (「%XX」や「%XX%」など)コード値...

JavaScript で大きなファイルの並列ダウンロードを実装する方法

目次1. HTTP範囲リクエスト1.1 範囲構文2. 大きなファイルをダウンロードする方法2.1 補...

純粋な CSS3 で蝶が羽ばたく様子を再現する例

純粋なCSS3で蝶が羽ばたく様子を再現。まずはその効果をご覧ください どうですか?効果はかなりいいで...

nginxプロキシsocket.ioサービスの落とし穴の詳細な説明

目次Nginx は 2 つの socket.io サーバーをプロキシします。 socket.ioの動...

Homebrewを使用してMacにMySQLをインストールするときにログインできない問題を解決する

お使いのコンピュータが Mac の場合、homebrew を使用して MySQL をインストールする...

Dockerで作成したコンテナを削除する方法

Dockerで作成したコンテナを削除する方法1. まず、docker -s -aコマンドを使用してす...

MySQL接続クエリにおけるととwhereの違いの簡単な分析

1. テーブルを作成する テーブル「学生」を作成( `id` int(11) NULLではない、 `...

ウェブデザイン実践者必読のキャリアプラン

原文記事、転載の際は著者と出典を明記してください! Web デザインは間違いなくテクノロジーであり、...

マインスイーパゲームを実装するための jQuery プラグイン (2)

この記事では、jQueryプラグインを使用してマインスイーパゲームを実装する2番目の記事を参考までに...

プロセスごとにネットワーク帯域幅を監視する Linux ツール Nethogs のインストールと展開

概要Linux 用のオープン ソース ネットワーク監視ツールは数多くあります。たとえば、帯域幅の使用...

MySQL マスタースレーブの原理と構成の詳細

MySQLのマスタースレーブ構成と原理、参考までに具体的な内容は以下のとおりです。 1. 環境の選択...