docker查看mysql日志_启用docker mysql容器中的日志记录
我正在尝试熟悉docker生态系统并尝试设置一个mysql数据库容器.使用docker-compose,它看起来像:version: '2'services:db:image: mysql:5.6.33@sha256:31ad2efd094a1336ef1f8efaf40b88a5019778e7d9b8a8579a4f95a6be88eabavolumes:- "./db/data:/var/l
我正在尝试熟悉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
我的conf目录包含一个文件:
[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中移动所有这些东西来改进我的方法,但这对我来说仍然很奇怪.
解决方法:
After connecting to the container and creating the 3 files, chown them to mysql and restarting the container, the logging is working as expected.
这指向主机卷权限问题.当您从容器映射到主机时,没有对用户ID进行映射,并且容器内的uid附加的名称可能与外部非常不同.您需要使用容器用户可以写入的内容初始化目录权限.一种简单的方法是创建一个有权写入主机和容器上的文件的组,然后在映像和主机操作系统上将各种用户添加到该组.另一个选项是使用您不能直接从主机访问的命名文件系统,并使用映像的目录权限对其进行初始化.
编辑:使用docker-compose.yml命名卷的示例非常简单:
version: '2'
volumes:
mysql-data:
driver: local
mysql-log:
driver: local
mysql-conf:
driver: local
services:
db:
image: mysql:5.6.33
volumes:
- "mysql-data:/var/lib/mysql"
- "mysql-log:/var/log/mysql"
- "mysql-conf:/etc/mysql/conf.d"
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: rootpw
MYSQL_DATABASE: db
MYSQL_USER: db
MYSQL_PASSWORD: dbpw
请注意,我还从您的图像名称中删除了sha256,此引用会阻止您拉出图像的修补版本.我也更喜欢“除非停止”重启策略,以便Docker在重新启动时确实需要.
标签:docker,mysql,logging
来源: https://codeday.me/bug/20191001/1839129.html
更多推荐
所有评论(0)