我想从mysql容器中的主机挂载一个目录,以便mysql将其日志写入该目录,然后我就可以从主机访问这些日志了。
为此,我使用以下卷配置:
volumes:
- ./logs/mysql:/var/log/mysql
但正如this回答中指出的那样,主机用户和容器用户之间存在权限问题。那里的解决方案是使用命名卷,但我想要的是在方便的目录中访问主机上的那些日志。不在docker的内部目录中。
答案 0 :(得分:5)
所以我运行了默认图像并进行了一些观察
/var/log/mysql
中根本不会创建日志文件。这是因为默认my.cnf
已对error-log
设置进行了评论/etc/mysql/mysql.conf.d
/entrypoint.sh
确实更改了/var/lib/mysql
上的权限,但未更改/var/log/mysql
上的权限因此,要解决此问题,请添加一个包含以下内容的test.cnf
文件
[mysqld]
log-error = /var/log/mysql/error.log
general_log = /var/log/mysql/log_output.log
使用以下设置更新您的docker-compose
version: '2'
services:
mysql:
image: mysql:latest
volumes:
- ./logs:/var/log/mysql
- ./test.cnf:/etc/mysql/mysql.conf.d/test.cnf
environment:
MYSQL_ROOT_PASSWORD: root
entrypoint: ""
command: bash -c "chown -R mysql:mysql /var/log/mysql && exec /entrypoint.sh mysqld"
这将确保在运行入口点脚本之前设置适当的权限