我想在 mysql 容器中从主机挂载一个目录,以便 mysql 将其日志写入该目录,我将能够从主机访问这些日志。
为此,我使用以下卷配置:
volumes:
- ./logs/mysql:/var/log/mysql
但正如 this 中指出的那样回答,宿主机用户和容器用户之间存在权限问题。那里的解决方案是使用命名卷,但我想要的是在一个方便的目录中访问主机上的那些日志。不在 docker 的内部目录中。
最佳答案
所以我运行了默认图像并进行了一些观察
- 默认情况下,日志文件根本不会在
/var/log/mysql
中创建。这是因为默认的my.cnf
有error-log
settings commented - 您需要创建自己的配置文件来添加这些设置并将它们映射到
/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"
这将确保在运行入口点脚本之前设置了正确的权限
关于mysql - 将mysql容器的日志挂载到宿主目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45431074/