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

推薦する

便利で使いやすいウェブアプリケーションを設計するための 10 のヒント

より使いやすい Web アプリケーションを設計するための 10 のヒントをご紹介します。ヒント1: ...

CentOS7 構成 Alibaba Cloud yum ソースメソッドコード

Centos yumフォルダを開くコマンドcd /etc/yum.repos.d/を入力します。 w...

CSSフローティングとフローティング解除について

フロートの定義要素を通常のドキュメント フローから外し、要素を左また​​は右に近づけます。親要素の端...

MySql 範囲内の検索時にインデックスが有効にならない理由の分析

1 問題の説明この記事では、確立された複合インデックスをソートし、レコード内の非インデックス フィー...

親子コンポーネントの通信を解決するための3つのVueスロット

目次序文環境の準備カテゴリコンポーネントアプリのコンポーネント1. デフォルトスロット2. 名前付き...

仮想マシンでXshell5をLinuxに接続する方法と障害の解決方法

かなり前に仮想マシンをインストールしましたが、ようやく Linux をインストールしました。マシンの...

Linuxにソフトウェアをインストールするいくつかの方法の詳細な説明

1. RPM パッケージのインストール手順: 1. soft.version.rpm などの対応する...

Webフォーム作成スキル

実際、上記の 3 つの表はいずれも 3 行 3 列です。区切り線を非表示にするコツはルールにあります...

Windows 7 での MySQL 8.0.18 の導入とインストールのチュートリアル

1. 事前準備 (windows7+mysql-8.0.18-winx64) 1. ダウンロードアド...

大きなオフセットによる MySQL 制限ページングが遅い理由と最適化ソリューション

MySQL では通常、limit を使用してページ上のページング機能を完了しますが、データ量が大きな...

mysql8.0.11 winx64 インストールと設定のチュートリアル

mysql 8.0.11 winx64のインストールチュートリアルは以下のように記録され、みんなと共...

jsを使用してサーバーに写真をアップロードする

この記事の例では、参考のために画像をサーバーにアップロードするためのjsの具体的なコードを共有してい...

素晴らしいCSS属性MASKの詳しい説明

この記事では、CSS の非常に興味深い属性マスクを紹介します。名前が示すように、マスクはマスクと翻訳...

Alibaba Cloud Ubuntu 16.04 が IPSec サービスを構築

IPSec の概要IPSec (インターネット プロトコル セキュリティ): ネットワーク層と適用さ...

Docker で SVN サーバーを構築するチュートリアル

SVN は Subversion の略称で、ブランチ管理システムを使用して効率的に管理するオープンソ...