我正试图熟悉docker生态系统,并尝试设置一个mysql数据库容器。使用docker-compose
,这看起来像是:
version: '2'
services:
db:
image: mysql:5.6.33@sha256:31ad2efd094a1336ef1f8efaf40b88a5019778e7d9b8a8579a4f95a6be88eaba
volumes:
- "./db/data:/var/lib/mysql"
- "./db/log:/var/log/mysql"
- "./db/conf:/etc/mysql/conf.d"
restart: "yes"
environment:
MYSQL_ROOT_PASSWORD: rootpw
MYSQL_DATABASE: db
MYSQL_USER: db
MYSQL_PASSWORD: dbpw
我的配置文件目录中只包含一个文件:
[mysqld]
log_error =/var/log/mysql/mysql_error.log
general_log_file=/var/log/mysql/mysql.log
general_log =1
slow_query_log =1
slow_query_log_file=/var/log/mysql/mysql_slow.log
long_query_time =2
log_queries_not_using_indexes = 1
很遗憾,这种方式我无法获得任何日志文件。设置本身是正确的,且 cnf 文件被使用。连接到容器并创建 3 个文件后,请使用 chown
将它们归属于 mysql
并重新启动容器,则日志记录将按预期工作。
我相信这是一个常见的情况,而我目前的运行方式似乎非常愚蠢。 正确的做法是什么?
我可以通过将所有这些内容移动到 Dockerfile 中来改进我的方法,但这对我来说仍然很奇怪。
--general-log-file
,因为它是一个命令行参数,而不是服务器变量。请参见https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_general_log_file和“命令行格式”。 - ponsfrilus