mysql8を入れてworkbenchで見てみる
mysqlのフォルダを作成。
Dockerfileを作成。
FROM mysql:8.0.33
docker hubを検索して 元になったDockerfileを見てみる。
設定ファイルや、データの置き場所を探るのと、ベースのOSを取り敢えず知っておくため。
次
次
次 8.0/Dockerfile.oracle を見てみる。
# make sure users dumping files in "/etc/mysql/conf.d" still works
! grep -F '!includedir' /etc/my.cnf; \
{ echo; echo '!includedir /etc/mysql/conf.d/'; } >> /etc/my.cnf; \
mkdir -p /etc/mysql/conf.d; \
# ensure these directories exist and have useful permissions
# the rpm package has different opinions on the mode of `/var/run/mysqld`, so this needs to be after install
mkdir -p /var/lib/mysql /var/run/mysqld; \
chown mysql:mysql /var/lib/mysql /var/run/mysqld; \
・・・・・
VOLUME /var/lib/mysql
たぶんデータは /var/lib/mysql
設定ファイルは /etc/mysql/conf.d
の辺りにあるらしい。
取り敢えず、docker-compose.ymlに書き加えてビルドしてみる
ポートはデフォルトにしておく。
version: "3"
services:
mysql:
build: ./mysql
ports:
- 3306:3306
nginx:
build: ./nginx
ports:
- 8085:80
volumes:
- ./content_home:/usr/share/nginx/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
php:
build: ./php
volumes:
- ./content_home:/usr/share/nginx/html
- ./php/php.ini:/usr/local/etc/php/php.ini
- ./php/www.conf:/usr/local/etc/php-fpm.d/www.conf
ビルド!
root@virtual-machine:~# cd /home/www_vtest
root@virtual-machine:/home/www_vtest# docker compose up -d --build
[+] Building 33.5s (15/15) FINISHED
・・・・
[+] Running 3/3
? Container www_vtest-mysql-1 Started 1.6s
? Container www_vtest-php-1 Running 0.0s
? Container www_vtest-nginx-1 Running 0.0s
どうも失敗した様子
# docker start www_vtest-mysql-1
www_vtest-mysql-1
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55dfc07a9920 www_vtest-mysql "docker-entrypoint.s…" 6 minutes ago Exited (1) 5 seconds ago www_vtest-mysql-1
ログを見てみる。
環境変数を指定しないと行けない様子
フツーとは違うんだ・・・
root@virtual-machine:/home/www_vtest# docker logs www_vtest-mysql-1
2023-07-15 04:56:20+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started.
2023-07-15 04:56:20+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2023-07-15 04:56:20+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.33-1.el8 started.
2023-07-15 04:56:20+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
You need to specify one of the following as an environment variable:
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
ネットを探して、適当な情報を書き加えておく
version: "3"
services:
mysql:
build: ./mysql
ports:
- 3306:3306
environment:
MYSQL_USER: root
MYSQL_ROOT_PASSWORD: test
MYSQL_PASSWORD: test
nginx:
build: ./nginx
ports:
- 8085:80
volumes:
- ./content_home:/usr/share/nginx/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
php:
build: ./php
volumes:
- ./content_home:/usr/share/nginx/html
- ./php/php.ini:/usr/local/etc/php/php.ini
- ./php/www.conf:/usr/local/etc/php-fpm.d/www.conf
再度ビルト!
root@virtual-machine:/home/www_vtest# docker compose up -d --build
[+] Building 1.8s (15/15) FINISHED
・・・・
? Container www_vtest-php-1 Running 0.0s
? Container www_vtest-mysql-1 Started 0.8s
? Container www_vtest-nginx-1 Running 0.0s
立ち上がらない
MYSQL_USER="root"を消して!次の変数をセットしろ!
と言われる
なかなか細かく指示してくれる感じ
2023-07-15 05:32:47+00:00 [ERROR] [Entrypoint]: MYSQL_USER="root", MYSQL_USER and MYSQL_PASSWORD are for configuring a regular user and cannot be used for the root user
Remove MYSQL_USER="root" and use one of the following to control the root user password:
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
今度こそ・・・
version: "3"
services:
mysql:
build: ./mysql
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=test
- MYSQL_USER=test_user
- MYSQL_PASSWORD=test
- MYSQL_ALLOW_EMPTY_PASSWORD="No"
- TZ="Asia/Tokyo"
nginx:
build: ./nginx
ports:
- 8085:80
volumes:
- ./content_home:/usr/share/nginx/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
php:
build: ./php
volumes:
- ./content_home:/usr/share/nginx/html
- ./php/php.ini:/usr/local/etc/php/php.ini
- ./php/www.conf:/usr/local/etc/php-fpm.d/www.conf
立ち上がった!
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
83aeda0fa424 www_vtest-mysql "docker-entrypoint.s…" 6 seconds ago Up 5 seconds 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp www_vtest-mysql-1
ワークベンチで繋いでみる
無事接続完了
データの保存・設定は後日に回そう・・・
mysqlのDBをコンテナ外に置いて永続化する。
volumes:
- [コンテナの外のパス]:[コンテナ内でのパス]
なので
./content_db
のフォルダを作成して・・・
volumes:
- ./content_db:/var/lib/mysql
をdocker-compose.ymlに書き加える。
version: "3"
services:
mysql:
build: ./mysql
ports:
- 3306:3306
environment:
- MYSQL_ROOT_PASSWORD=test
- MYSQL_USER=test_user
- MYSQL_PASSWORD=test
- MYSQL_ALLOW_EMPTY_PASSWORD="No"
- TZ="Asia/Tokyo"
volumes:
- ./content_db:/var/lib/mysql
nginx:
build: ./nginx
ports:
- 8085:80
volumes:
- ./content_home:/usr/share/nginx/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
php:
build: ./php
volumes:
- ./content_home:/usr/share/nginx/html
- ./php/php.ini:/usr/local/etc/php/php.ini
- ./php/www.conf:/usr/local/etc/php-fpm.d/www.conf
ビルドします
root@virtual-machine:/home/www_vtest# docker compose up -d --build
[+] Building 64.8s (15/15) FINISHED
・・・・
? Container www_vtest-php-1 Running 0.0s
? Container www_vtest-mysql-1 Started 5.8s
? Container www_vtest-nginx-1 Running
でcontent_dbを見てみると・・・ワークベンチで繋いで[testdb]を新規作成して
DBのフォルダが出来ている事を確認。