環境変数とdocker-composeで簡単接続!Dockerコンテナ内のMySQLにアクセスする方法
Dockerコンテナ内のMySQLにホストから接続する方法
環境変数を使う方法
この方法は、コンテナ起動時に環境変数を設定することで、ホストから接続するための情報をコンテナ内に伝えます。
手順
- Dockerfile に以下の内容を追加します。
ENV MYSQL_ROOT_PASSWORD パスワード
ENV MYSQL_DATABASE データベース名
- 以下のコマンドでコンテナを起動します。
docker run -it -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -p 3306:3306 --name mysql mysql:5.7
- ホストから以下のコマンドで接続します。
mysql -h localhost -u root -p パスワード -D データベース名
ポイント
MYSQL_ROOT_PASSWORD
はMySQLのrootユーザーのパスワードに置き換えます。MYSQL_DATABASE
は接続したいデータベース名に置き換えます。-p
オプションはパスワードを指定します。-D
オプションは接続したいデータベースを指定します。
docker-composeを使う方法
この方法は、docker-compose.yml
ファイルを使ってコンテナの構成と起動をまとめて行う方法です。
- 以下の内容の
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
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に接続する方法です。
-
接続設定画面で以下の項目を指定します。
- ホスト名:
localhost
- ポート番号:
3306
- ユーザー名:
root
- パスワード:
MYSQL_ROOT_PASSWORD
- データベース名:
データベース名
- ホスト名:
mysql docker dockerfile