「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > プロジェクトの Docker コンテナで MySQL を使用する

プロジェクトの Docker コンテナで MySQL を使用する

2024 年 8 月 18 日に公開
ブラウズ:542

Using MySQL in a Docker Container for your Projects

私はホスト システムをクリーンに保つことを強く信じています。 Docker コンテナはこれに対する完璧なソリューションです。 DB ニーズに合わせて、Node / Express バックエンドと MySQL サーバーを備えた React アプリに取り組んでいるとします。通常は、ホスト システムに mysql をインストールし、データベースを作成し、パスワードを持つユーザーを作成して、そのデータベースを操作する権限をユーザーに付与します。

プロジェクトごとに毎回これを構成するのに時間を無駄にするのではなく、Docker イメージを使用して MySQL データベース サーバーを作成するだけで、必要なセットアップがすべて完了して数秒で準備が整い、起動して実行できるようになります。絶対に必要です。

信じてください。このルートを使用してワークフローを理解したら、古い方法には決して戻ることはできません。そこで、私がどのように対処するか、そして非常にシンプルで基本的な方法を説明します。

Docker の使用経験があり、このチュートリアルをスキップして TLDR バージョンを直接使用したい場合は、この Gist の方がはるかに高速です。

何が必要になるでしょうか?

Docker を使用するには、Docker が必要です。ここでは、Docker のインストールについては詳しく説明しません。 CLI に慣れていない場合、または Windows/MacOS を使用している場合は、Docker Desktop を使用してください。Docker Desktop は、面倒な作業をすべて裏で実行します。

Linux ユーザーは、その気にならなければ、Docker Compose プラグインまたは Docker Desktop を使用して Docker Engine をインストールすることもできます。

通常、使用する MySQL 公式イメージなどのパブリック イメージをダウンロードするために Docker Hub のアカウントは必要ありません。

さて、今はどうする?

これを行うには 2 つの方法があります。

Docker Run の使用 (非推奨)

docker run コマンドを使用してコンテナを直接実行できるようにするには、まずシステムに MySQL イメージをダウンロードしておく必要があります。イメージをシステムにプルするには、次のコマンドを使用するだけです:

docker pull mysql

注: MySQL の特定のバージョンが必要ない場合、このコマンドは最新のもの (latest タグが付いたもの) をダウンロードします。必要に応じて、Docker Hub からさらに多くのタグとバージョンを探索できます。

Docker のダウンロードが完了すると、ダウンロードしたイメージは次のように表示されます。

docker image ls

さて、コンテナを実行するには、docker run コマンドで多くのフラグを追加する必要があります。このリンクにアクセスして、すべてのオプションを確認できます。また、追加する必要があるすべてのフラグを覚えておく必要があります。これは、いくつかのフラグが欠けているとエラーがスローされたり、機能しないコンテナが起動したりする可能性があるためです。

さらに、コンテナを実行するたびに、ターミナルの履歴からこの長いコマンドを見つけ出すか、再度入力する必要があります。それは意味がありません。

これが、このアプローチをお勧めしない理由です。もっと良い方法があります。

Docker Compose

コンテナの起動時に必要なものを Docker に伝える Docker Compose ファイルを作成します。すべてをファイル内に配置したら、コンテナーの起動は簡単になります。

注: 作成ファイルは任意の名前で作成できます。独自の名前を使用するか、作成ファイルを他のフォルダーに保存する場合、それを機能させるにはフラグ -f を指定する必要があります。あるいは、ファイルと同じフォルダーからコマンドを実行している場合は、ファイルに docker-compose.yaml という名前を付けることができます。

Docker Compose ファイルは YAML ファイルです。私たちのものは次のようになります:

# This Docker Compose YAML deploys a MySQL database
services:
  container-name:

    image: mysql # Official MySQL image from Docker Hub
    restart: always

    environment:
      # Note - Root password is mandatory for the container to run and grant privileges to our User.
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}

      MYSQL_DATABASE: ${MYSQL_DATABASE} # Same name as used in your project

      # DB User Details
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}

    ports:
      # Adjust this port as per your needs -> :
      - 3308:3306 # DB is available at localhost:3308 on the host.

    volumes:
      - ./volumes/db-mnt:/var/lib/mysql

このファイルは、冒頭で説明した Gist からも入手できます。

重要事項

  1. ポート マッピング: 最初のポートは、2 番目のポート (Docker コンテナ内のポート) にマッピングされるホスト ポート (システム) です。これは、上記の例では、localhost:3308 のデータベースにアクセスできることを意味します。自分が何をしているのか分かっていない限り、2 番目のポートは 3306 のままにしておきます。これは MySQL のデフォルトのポートです。
  2. ボリューム バインド マウント: データベース内にデータを永続化するためにローカル ボリュームをコンテナにマウントしています。これにより、必要に応じてバックアップや移動が簡単になります。 Docker に独自のボリュームを管理させ、ホスト システム上に定期的なバックアップを作成させることもできます。 #### 環境ファイル コンテナーの作成中に必要な認証情報を Docker に提供するには、React アプリやバックエンド アプリで行うのと同じように、.env ファイルを作成します。

このファイルは、作成ファイルと同じフォルダーに作成することも、任意の場所に作成することもできますが、docker-compose を呼び出すときにパスを指定する必要があります。

# Content of the Environment Variables file
MYSQL_ROOT_PASSWORD=rootpassword
MYSQL_DATABASE=nameofdatabase
MYSQL_USER=dbusername
MYSQL_PASSWORD=dbuserpassword

これらすべてを準備したら、簡単なコマンドを 1 つ使用するだけで、データベースが起動して待機する準備が整います。

docker-compose up -d

これで、好みの手段を使用してデータベースに接続する準備が整いました。

また、構成ファイルからコンテナを実行するように構成したため、リポジトリ内の git システムに安全にバックアップできます。 .env ファイルを .gitignore するようにしてください。

リリースステートメント この記事は次の場所に転載されています: https://dev.to/nyukeit/using-mysql-in-a-docker-container-for-your-projects-4ham?1 侵害がある場合は、[email protected] までご連絡ください。それを削除するには
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3