使用docker镜像时如何更改MySQL的默认配置?

Jay*_*Jay 2 mysql docker

我有一个 MySQL 服务器,使用MySQL:8.0.21 镜像在 Ubuntu VPS 上的 docker 容器内运行。

我正在使用以下命令docker-compose.yml来启动服务器

version: "3"
services:
    mysql_server:
        image: mysql:8.0.21
        restart: always
        container_name: mysql_server
        environment:
            MYSQL_DATABASE: my_database
            MYSQL_USER: my_user
            MYSQL_PASSWORD: my_pass
            MYSQL_ROOT_PASSWORD: my_pass
        volumes:
            - mysql_server_data:/var/lib/mysql
            - /mysql/files:/etc/mysql/conf.d
Run Code Online (Sandbox Code Playgroud)

但是,我需要一种方法来设置 MySQL 的默认配置,而不是使用默认配置。

我尝试添加“命令line to thedocker-compose.yml”文件,如下所示。但这没有用。

version: "3"
services:
    mysql_server:
        image: mysql:8.0.21
        restart: always
        container_name: mysql_server
        environment:
            MYSQL_DATABASE: my_database
            MYSQL_USER: my_user
            MYSQL_PASSWORD: my_pass
            MYSQL_ROOT_PASSWORD: my_pass
        command: mysqld --innodb-buffer-pool-size=2.5G --innodb-log-file-size=512M
        volumes:
            - mysql_server_data:/var/lib/mysql
            - /mysql/files:/etc/mysql/conf.d
Run Code Online (Sandbox Code Playgroud)

conf.d我还尝试添加一个名为in的文件/mysql/files并向其中添加以下行,但这也不起作用

innodb_log_file_size = 512M
innodb_buffer_pool_size=2.5G
Run Code Online (Sandbox Code Playgroud)

如何正确更改在 docker 容器中运行的 MySQL 实例的默认配置?

Sim*_* K. 5

CMDmysqld在容器中设置为,因此文件command中的字段docker-compose只能包含您要更改的参数。这就是图像文档中推荐的内容。

例如:

services:
    mysql_server:
        image: mysql:8.0.21
        restart: always
        container_name: mysql_server
        [..]
        command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --innodb-buffer-pool-size=200M
        [..]
Run Code Online (Sandbox Code Playgroud)

另外,我不确定 是否2.5G是有效值innodb-buffer-pool-size,因此我建议使用诸如2500M或类似的整数值。