環境変数とdocker-composeで簡単接続!Dockerコンテナ内のMySQLにアクセスする方法

2024-04-10

Dockerコンテナ内のMySQLにホストから接続する方法

環境変数を使う方法

この方法は、コンテナ起動時に環境変数を設定することで、ホストから接続するための情報をコンテナ内に伝えます。

手順

  1. Dockerfile に以下の内容を追加します。
ENV MYSQL_ROOT_PASSWORD パスワード
ENV MYSQL_DATABASE データベース名
  1. 以下のコマンドでコンテナを起動します。
docker run -it -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -p 3306:3306 --name mysql mysql:5.7
  1. ホストから以下のコマンドで接続します。
mysql -h localhost -u root -p パスワード -D データベース名

ポイント

  • MYSQL_ROOT_PASSWORD はMySQLのrootユーザーのパスワードに置き換えます。
  • MYSQL_DATABASE は接続したいデータベース名に置き換えます。
  • -p オプションはパスワードを指定します。
  • -D オプションは接続したいデータベースを指定します。

docker-composeを使う方法

この方法は、docker-compose.yml ファイルを使ってコンテナの構成と起動をまとめて行う方法です。

  1. 以下の内容の docker-compose.yml ファイルを作成します。
version: '3'

services:
  mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=パスワード
      - MYSQL_DATABASE=データベース名
    ports:
      - "3306:3306"

volumes:
  mysql_data:

networks:
  default:
    external:
      name: default
docker-compose up -d
mysql -h localhost -u root -p パスワード -D データベース名

Dockerコンテナ内のMySQLにホストから接続するには、環境変数を使う方法と docker-compose を使う方法があります。どちらの方法もメリットとデメリットがあるので、状況に合わせて使い分けてください。




FROM mysql:5.7

ENV MYSQL_ROOT_PASSWORD パスワード
ENV MYSQL_DATABASE データベース名

RUN echo "CREATE DATABASE ${MYSQL_DATABASE};" | mysql -u root -p${MYSQL_ROOT_PASSWORD}

CMD ["mysqld"]

docker-compose.yml

version: '3'

services:
  mysql:
    image: mysql:5.7
    environment:
      - MYSQL_ROOT_PASSWORD=パスワード
      - MYSQL_DATABASE=データベース名
    ports:
      - "3306:3306"

volumes:
  mysql_data:

networks:
  default:
    external:
      name: default

接続コマンド

mysql -h localhost -u root -p パスワード -D データベース名
  • 上記のサンプルコードは、あくまでも参考です。環境に合わせて修正してください。
  • パスワードは適切なものに変更してください。
  • データベース名は接続したいデータベース名に変更してください。



その他の接続方法

Dockerネットワークを使って、コンテナ同士を仮想的なネットワークで接続する方法です。

version: '3'

networks:
  default:
    external:
      name: default

services:
  mysql:
    image: mysql:5.7
    networks:
      - default

  app:
    image: your-app-image
    networks:
      - default
    depends_on:
      - mysql

docker-compose up -d
  1. app コンテナ内で以下のコマンドを実行して、MySQLに接続します。
mysql -h mysql -u root -p パスワード -D データベース名

SSHを使って、コンテナ内にログインしてからMySQLに接続する方法です。

docker exec -it mysql bash
mysql -u root -p パスワード -D データベース名

MySQL WorkbenchなどのGUIツールを使って、コンテナ内のMySQLに接続する方法です。

  1. 接続設定画面で以下の項目を指定します。

    • ホスト名: localhost
    • ポート番号: 3306
    • ユーザー名: root
    • パスワード: MYSQL_ROOT_PASSWORD
    • データベース名: データベース名

mysql docker dockerfile


Sequelize、TypeORM、MikroORM、Prisma徹底比較

Sequelize:最も人気のあるORMの一つ豊富な機能と活発なコミュニティ学習曲線は少し急TypeORM:TypeScriptに特化したORM静的型付けによる安全性とコードの簡潔性比較的新しく、コミュニティ規模はSequelizeより小さい...


【保存版】MySQLで今日の日付を扱う!CURDATE関数、BETWEEN句、サブクエリを使いこなそう

MySQLで、特定の列の日付が今日の日付と一致するレコードを抽出する方法はいくつかあります。ここでは、最も一般的な2つの方法を紹介します。方法1:CURDATE()関数を使用する構文説明CURDATE() 関数は、現在のシステム日付をYYYY-MM-DD形式で返します。...