私はホスト システムをクリーンに保つことを強く信じています。 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 コマンドを使用してコンテナを直接実行できるようにするには、まずシステムに MySQL イメージをダウンロードしておく必要があります。イメージをシステムにプルするには、次のコマンドを使用するだけです:
docker pull mysql
注: MySQL の特定のバージョンが必要ない場合、このコマンドは最新のもの (latest タグが付いたもの) をダウンロードします。必要に応じて、Docker Hub からさらに多くのタグとバージョンを探索できます。
Docker のダウンロードが完了すると、ダウンロードしたイメージは次のように表示されます。
docker image ls
コンテナを実行するには、docker run コマンドで多くのフラグを追加する必要があります。このリンクにアクセスして、すべてのオプションを確認できます。また、追加する必要があるフラグをすべて覚えておく必要があります。フラグが欠けているとエラーがスローされたり、機能しないコンテナが起動したりする可能性があるためです。
さらに、コンテナを実行するたびに、ターミナルの履歴からこの長いコマンドを見つけ出すか、再度入力する必要があります。それは意味がありません。
これが、このアプローチをお勧めしない理由です。もっと良い方法があります。
コンテナの起動時に必要なものを 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 からも入手できます。
重要事項
このファイルは、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 サイトの他の関連記事を参照してください。