前提・実現したいこと
Vagrantの共有フォルダに設置されたmy.cnfをDocckerコンテナのMySQL内にコピーして、MySQLにmy.cnfの内容を適用するにはどうしたら良いでしょうか?
発生している問題
Windows10のパソコンでVagrantを使ってCentOS7.2を立ち上げています。
CentOS内でdocker-composeを使ってMySQL8.0.18を起動しています。
Dockerfile内でmy.cnfをコピーする記述をしているのですが、コンテナにアクセスしてmy.cnfを見ると何も設定されていない空白のファイルが存在するだけです。(初期配置ファイル?)
このためMySQLに設定が反映されません。
該当のソースコード
■ディレクトリ構成
├─ .env ├─ docker-compose.yml └─ mysql ├─ logs ─────・・ ├─ var_lib_mysql─・・ ├─ my.cnf └─ Dockerfile
■docker-compose.yml
version: '3' services: mysql: build: ./mysql environment: - MYSQL_DATABASE=${DB_NAME} - MYSQL_USER=${DB_USER} - MYSQL_PASSWORD=${DB_PASS} - MYSQL_ROOT_PASSWORD=${DB_PASS} - TZ=${TZ} ports: - ${DB_PORT}:3306 volumes: - ./mysql/var_lib_mysql:/var/lib/mysql - ./mysql/init:/docker-entrypoint-initdb.d - ./mysql/logs:/var/log/mysql command: --innodb-use-native-aio=0 phpmyadmin: image: phpmyadmin/phpmyadmin environment: - PMA_ARBITRARY=1 - PMA_HOST=mysql - PMA_USER=root - PMA_PASSWORD=${DB_PASS} links: - mysql ports: - 8080:80 volumes: - /sessions
■mysql/Dockerfile
FROM mysql:8.0.18 ADD my.cnf /etc/mysql/conf.d/my.cnf RUN chmod 644 /etc/mysql/conf.d/my.cnf CMD ["mysqld", "--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
■mysql/my.cnf
# MySQLサーバーへの設定 [mysqld] # 文字コード/照合順序の設定 character-set-server = utf8mb4 collation-server = utf8mb4_bin default-authentication-plugin = mysql_native_password # タイムゾーンの設定 default-time-zone = SYSTEM log_timestamps = SYSTEM # エラーログの設定 log-error = /var/log/mysql/mysql-error.log # スロークエリログの設定 slow_query_log = 1 slow_query_log_file = /var/log/mysql/mysql-slow.log long_query_time = 5.0 log_queries_not_using_indexes = 0 # 実行ログの設定 general_log = 1 general_log_file = /var/log/mysql/mysql-query.log # mysqlオプションの設定 [mysql] # 文字コードの設定 default-character-set = utf8mb4 # mysqlクライアントツールの設定 [client] # 文字コードの設定 default-character-set = utf8mb4
試したこと
docker-compose.ymlにコピーする記述 (- ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf) をしてみましたが、Vagrantの共有設定のせいか、コンテナにコピーした時にパーミッション777でMySQLから無視されてしまいました。
■docker-compose.yml
services: mysql: build: ./mysql environment: - MYSQL_DATABASE=${DB_NAME} - MYSQL_USER=${DB_USER} - MYSQL_PASSWORD=${DB_PASS} - MYSQL_ROOT_PASSWORD=${DB_PASS} - TZ=${TZ} ports: - ${DB_PORT}:3306 volumes: - ./mysql/var_lib_mysql:/var/lib/mysql - ./mysql/init:/docker-entrypoint-initdb.d - ./mysql/logs:/var/log/mysql - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf command: --innodb-use-native-aio=0
補足情報(FW/ツールのバージョンなど)
名 | バージョン |
---|---|
vagrant | 2.2.14 |
CentOS | 7.2 |
docker | 20.10.2, build 2291f61 |
docker-compose | 1.22.0, build f46880fe |
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/13 23:28 編集
2021/01/14 10:33
2021/01/14 23:18