如何在Laravel Sail docker-compose.yml中添加mysql-config



我有一个全新的Laravel 8安装和mysql:8.0镜像。

我想向MySql添加一些配置。

这是我在docker-compose.yml:中的mysql服务

mysql:
image: 'mysql:8.0'
ports:
- '${FORWARD_DB_PORT:-3306}:3306'
environment:
MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
MYSQL_DATABASE: '${DB_DATABASE}'
MYSQL_USER: '${DB_USERNAME}'
MYSQL_PASSWORD: '${DB_PASSWORD}'
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
volumes:
- 'sailmysql:/var/lib/mysql'
networks:
- sail
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-p${DB_PASSWORD}"]
retries: 3
timeout: 5s

这很好用。如果我现在尝试将my.cnf添加到卷中,如下所示:

volumes:
- 'sailmysql:/var/lib/mysql'
- './docker/8.0/my.cnf:/etc/mysql/my.cnf'

并用sail downsail up重新启动容器,然后它突然失败:

mysql_1         | 2021-11-06T13:26:52.465786Z 0 [ERROR] [MY-010095] [Server] Failed to access directory for --secure-file-priv. Please make sure that directory exists and is accessible by MySQL Server. Supplied value : /var/lib/mysql-files
mysql_1         | 2021-11-06T13:26:52.465813Z 0 [ERROR] [MY-010119] [Server] Aborting

如何包含配置?

刚刚偶然发现你的问题,因为我也有同样的问题。我正在使用Laravel和Sail以及当前的mysql docker容器。

我检查了docker容器,mysql配置保存如下:

基本my.cnf文件位于此处:

/etc/my.cnf

(还有一个文件夹/etc/my.cnf.d/,但在那里放一个自定义的.cnf文件不起作用,因为它不包括在/etc/my.cnf中(

从docker容器复制/etc/my.cnf的原始内容后,我在docker-compose.yml文件中所做的是:

volumes:
- 'sail-mysql:/var/lib/mysql'
- './docker/8.2/my.cnf:/etc/my.cnf'

我需要它,因为我得到了MySQL: Error Code: 1118 Row size too large (> 8126).,可能是这样修复的:

innodb_strict_mode = OFF

您可以通过将loggin记录到这样的运行容器中来检查mysql-doker配置(请参阅https://hub.docker.com/_/mysql):

$ docker exec -it nameOfMysqlContainer bash

登录时列出etc文件夹中的文件:

$ ls -la /etc/

自定义my.cnf覆盖设置(pid文件、socke和datadir(,导致mysql服务失败。为了不覆盖它们,需要保留原始my.cnf文件,即:

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL

所以在你的情况下,你必须添加:

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL
innodb_io_capacity = 2000
innodb_read_io_threads = 64
innodb_thread_concurrency = 64
innodb_write_io_threads = 64

相关内容

  • 没有找到相关文章

最新更新