我是docker的新手,还在摸索它的工作原理。我通过docker-compose建立了一个wordpress网站,使用的yaml文件如下。
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- ./db_data/db/backup.sql:/docker-entrypoint-initdb.d/backup.sql #it loads an already existing database
#- ./db_data/all.log:/var/log/mysql/all.log # i want here to have the logs of mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
- ./db_data/wp-content:/var/www/html/wp-content # loads the files from an existing installation of wordpress
volumes:
db_data:
正如您可以从这行代码看到:
- ./db_data/all.log:/var/log/mysql/all.log
我希望能够记录所有的查询请求,已经通过以下步骤实现:
1)在yaml文件中注释掉包含all.log的那一行,在docker-compose up运行时。
2)使用bash登录到mysql容器中并执行以下命令。
mysql -u root -psomewordpress -e "SET global log_output = 'FILE'; SET global general_log_file='/var/log/mysql/all.log'; SET global general_log = 1;"
3) 前往 /var/lib/docker/volumes 目录并获取已创建的文件。
我想要实现的是将此命令作为yaml文件的一部分,以便我还可以在yaml文件所在的位置挂载all.log文件。