mysql8を入れてworkbenchで見てみる


VB TIPS AND SAMLPE Docker入門

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のフォルダが出来ている事を確認。