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

王林
リリース: 2024-08-07 09:06:31
オリジナル
520 人が閲覧しました

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 -> <hostPort>:<containerPort>
      - 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 ファイルを作成します。

このファイルは、compose ファイルと同じフォルダーに作成することも、任意の場所に作成することもできますが、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 してください。

以上がプロジェクトの Docker コンテナで MySQL を使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート