MySQL入門:DockerでMySQL環境を構築する -Vol.6-

スポンサーリンク
MySQL入門:DockerでMySQL環境を構築する -Vol.6- 環境構築
MySQL入門:DockerでMySQL環境を構築する -Vol.6-
この記事は約6分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、DockerでMySQLの開発環境を構築する方法についてご紹介します。

スポンサーリンク

背景

MySQLの開発環境をDockerで構築する機会があったので、そのときの内容を備忘として残しています。

この記事のベースとなっている環境については、下記の記事を御覧ください。

ログディレクトリのマウント

これまで各種ログを出力できるようにしてきました。このログの中身を確認するには、ゲストコンテナにログインして、参照する必要がありました。ゲストコンテナにログインせずに、ホストから参照できるようにしたいために、ログディレクトリをホストにマウントするようにしました。

Docker ComposeでMySQLコンテナのログディレクトリをホストにマウントする理由は、以下の点にあります。

  1. 永続的なログ保存:
    • コンテナ内のログは一時的であり、コンテナが再起動されると失われます。
    • ホスト側にログをマウントすることで、ログが永続的に保存され、コンテナの再起動や削除に影響されません。
  2. デバッグとトラブルシューティング:
    • ログはアプリケーションの動作やエラーのトラブルシューティングに不可欠です。
    • ホスト側にログを保存することで、問題が発生した場合にログを分析し、原因を特定できます。
  3. セキュリティと監査:
    • ログはセキュリティ上の問題や不正アクセスの検出に役立ちます。
    • ホスト側にログを保存することで、セキュリティ監査やログの保持が容易になります。
  4. ログの可視性とアクセス:
    • ホスト側にログを保存することで、ログファイルを直接閲覧できます。
    • コンテナ内でログを探す必要がなくなり、ログの可視性が向上します。

したがって、MySQLコンテナのログをホストにマウントすることは、運用管理やトラブルシューティングにおいて重要です。

修正ファイル一覧

下記のファイルを作成、修正しました。ファイル内容は次のセクションに記載しています。

        new file:   .gitignore
        modified:   compose.yml

compose.yml

緑のセンテンスを追加します。

 services:
 
   mysql_server:
    user: mysql
     build: ./mysql_server
     container_name: mysql_server
    volumes:
      - ./mysql_server/log:/var/log/mysql
     environment:
       MYSQL_DATABASE: sample
       MYSQL_ROOT_PASSWORD: P@ssw0rd

このDocker Composeファイルは、MySQLサーバーを構築するための設定を記述しています。以下にコードの詳細を解説します。

  1. version: ‘3.8’: この行はDocker Composeファイルのバージョンを指定しています。ここではバージョン3.8を使用しています。
  2. services: このセクションは、Docker Composeで管理する各サービスの設定を記述します。ここでは1つのサービス(mysql_server)を定義しています。
    • mysql_server:
      • user: MySQLのユーザー名を指定しています(mysql)。
      • build: サービスのビルドに使用するDockerfileのパスを指定しています(./mysql_server)。
      • container_name: コンテナの名前を指定しています(mysql_server)。
      • volumes: ホストとコンテナ間でデータを共有するためのボリュームマウントを設定しています。ここではホストの./mysql_server/logディレクトリをコンテナの/var/log/mysqlにマウントしています。
      • environment: コンテナ内で使用する環境変数を指定しています。ここではMySQLのデータベース名(sample)とルートパスワード(P@ssw0rd)を設定しています。
      • networks: サービスが所属するネットワークを指定しています。ここではnetという名前のネットワークに所属させています。
  3. networks: このセクションは、Docker Composeで使用するネットワークの設定を記述します。ここではnetという名前のネットワークを定義しています。

簡潔に言えば、このDocker ComposeファイルはMySQLサーバーを構築し、データベース名がsampleでルートパスワードがP@ssw0rdであることを設定しています。

.gitignore

# log
*/log/*

.gitignore ファイルは、Gitが無視すべきファイルやディレクトリを指定するための設定ファイルです。この設定は、ログファイルに関連しています。

  1. # log: この行はコメントで、.gitignore ファイル内での説明やメモに使われます。実際の無視設定には影響しません。
  2. */log/*: このパターンは、リポジトリ内のすべてのディレクトリの中にある、名前が log のディレクトリとその中のファイルを無視するように指示しています。具体的には、以下のようなファイルやディレクトリが無視されます:
    • logs/debug.log
    • logs/monday/foo.bar
    • build/logs/debug.log

この設定は、ログファイルをGitのトラッキング対象外にするために使用されます。ログファイルは通常、ビルド成果物や実行時に生成されるファイルであり、リポジトリのソースコードから派生するものではありません。

.gitignore ファイルはリポジトリのルートに配置され、Gitが無視すべきファイルやディレクトリのパターンを記述します。これにより、不要なファイルがコミットされることを防ぎ、リポジトリの整理やパフォーマンスの向上に役立ちます。

動作確認

下記のコマンドを実行します。

make build
make up
ls mysql_server/log/

下記のようにこれまでに設定したログが出力されていることが確認できれば成功です。

% ls mysql_server/log/ 
bin.000001      bin.000002      bin.000003      bin.000004      bin.000005      bin.000006      bin.list        error.log       general.log     slow_query.log

おわりに

今日は、DockerでMySQLの開発環境を構築する方法についてご紹介しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました