Docker。 MySQL 图像。无法更改我的.cnf 文件

问题描述 投票:0回答:4

我有这样一个

docker-compose.yml
:

    database:
        container_name: test_db
        image: mysql:5.7
        volumes:
            - ./docker/my.cnf:/etc/my.cnf
        environment:
            - "MYSQL_ROOT_PASSWORD=root"
            - "MYSQL_DATABASE=test_db"
        ports:
            - "3306:3306"
        volumes:
          - test_db_data:/var/lib/mysql

volumes:
    test_db_data:

我想编辑

sql_mode

./docker/my.cnf
包含:

[mysqld]
sql_mode=""

但是当我从本地计算机连接到数据库并运行

SELECT @@sql_mode;
我收到:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

我做错了什么?

mysql macos docker docker-compose
4个回答
35
投票

您可以将其添加到您的数据库服务中:

command: --sql_mode=""

所以它:

    database:
    container_name: test_db
    image: mysql:5.7
    volumes:
        - ./docker/my.cnf:/etc/my.cnf
    environment:
        - "MYSQL_ROOT_PASSWORD=root"
        - "MYSQL_DATABASE=test_db"
    ports:
        - "3306:3306"
    volumes:
      - test_db_data:/var/lib/mysql
    command: --sql_mode=""

7
投票

尝试仅使用一个“volumes”指令。也许它只使用最后一个。


0
投票

这对我有用。可能与常规的 mySql 类似。关键部分是使我的自定义 cnf 只读。否则 mariadb 在日志中抱怨并忽略它。

      services:
        my-mariadb:
          image: mariadb
          volumes:
            - type: bind
              source: .\Data\my_mariadb\lowercase_tables.cnf #this needs to be read-only in the host
              target: /etc/mysql/mariadb.conf.d/lowercase_tables.cnf
          ports:
            - '3300:3306'
          environment:
            - MARIADB_ROOT_PASSWORD=myPassword

-3
投票

我变了

- ./docker/my.cnf:/etc/my.cnf

- ./docker/my.cnf:/etc/alternatives/my.cnf

作为附带奖励,它看起来被认为是“更好的做法”。

© www.soinside.com 2019 - 2024. All rights reserved.