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

推薦する

Docker プライベートリポジトリの管理とローカルリポジトリ内のイメージの削除

1: Dockerプライベートウェアハウスのインストール1. イメージリポジトリからイメージをダウン...

MySQL ストアドプロシージャの長所と短所の分析

MySQL バージョン 5.0 ではストアド プロシージャのサポートが開始されました。ストアド プロ...

Dockerコンテナを停止および削除できない問題の解決策

実行中のコンテナIDを見つける ドッカーps上記のコンテナの物理的な場所を見つける /var/lib...

WeChat アプレットのカスタム タブバー コンポーネント

この記事では、WeChatアプレットのカスタムタブバーコンポーネントの具体的なコードを参考までに紹介...

vue.config.js からプロジェクト最適化までの vue2.x 構成

目次序文vue.config.js 構成オプションパッケージサイズを縮小するためのパッケージの最適化...

カーソル ループを使用して、MySQL ストアド プロシージャで一時テーブルを読み取る

カーソルカーソルは、結果セット内のデータを表示または処理するために使用される方法です。カーソルを使用...

Nginx レベルで基本的なユーザー認証を構成する手順を完了します。

序文アプリケーション シナリオ: おそらく、内部 Web サイトは外部ユーザーにアクセス可能である必...

Linux bash: ./xxx: バイナリ ファイルを実行できません エラー

今日、Ubuntu 用の小さなツールを顧客に送りましたが、ユーザーはそれを受け取った後、実行できませ...

表内のコンテンツオーバーフローのレイアウト方法について

コンテンツオーバーフローとは何ですか?実際、テキストが大量にある場合、コンテンツ領域がそれだけの長さ...

HTML メタタグの小さなコレクション

<Head>……</head> は <HTML> のファイル ヘ...

MySQL 5.5 で範囲パーティションを追加および削除する例

導入RANGE パーティション分割は、指定された連続した間隔範囲に基づいています。RANGE の初期...

Vue+SpringBoot+Shiroのクロスドメイン問題を解決する

目次1. Vueフロントエンドを構成する1. クロスドメイン構成を開発する2. 本番環境のクロスドメ...

LINUX での IPTABLES ファイアウォールの基本的な使用方法のチュートリアル

序文パブリック IP を持つ本番 VPS の場合、必要なポートのみが開かれ、IP とポートを制御する...

Vue3でアイコンを使用する2つの例

目次1. SVGを使用する2. fontAwesomeを使用する3 ソース4 結論テクノロジースタッ...