以下のようなディレクトリワークスペースを作成します。
/my-docker-mysql
├── Dockerfile
├── config
│ └── my.cnf
└── data
Dockerfile
: Dockerイメージを構成するための指示書config/my.cnf
: MySQLの設定ファイルdata
: データボリューム用のディレクトリ(Databaseデータの永続化)my.cnf
ファイルを以下のように作成します。
[mysqld]
character-set-server=utf8
[mysql]
default-character-set=utf8
[mysqldump]
default-character-set=utf8
下記の内容のDockerfile
を作成します。
FROM mysql:8.0
ENV MYSQL_ROOT_PASSWORD password
ENV MYSQL_DATABASE test
ENV MYSQL_USER user
ENV MYSQL_PASSWORD password
COPY ./config/my.cnf /etc/mysql/conf.d/my.cnf
FROM mysql:8.0
はMySQL 8.0の公式イメージを使用することを設定しています。 COPY
命令は、my.cnf
をmysqlの設定ファイルとして、イメージ内の/etc/mysql/conf.d/
にコピーします。
作成したDockerfileからDockerイメージをビルドします。次のコマンドを実行します。
docker build -t my-mysql:latest .
ビルドしたイメージからDockerコンテナを実行します。下記の例ではMySQLのrootパスワードを password
と設定しています。
docker run --name my-mysql-instance -p 3306:3306 -v "%cd%/data":/var/lib/mysql -d my-mysql:latest:/var/lib/mysql -d my-mysql:latest
先ほど実行したコンテナに入り、MySQLにログインします。
# Dockerコンテナへログイン
docker exec -it my-mysql-instance bash
# MySQLへログイン
mysql -uuser -p
MySQLへのログインを求められるときに、先ほど設定したパスワード(この例ではpassword
)を入力します。