码头工人 MySQL映像。无法更改my.cnf文件

D.R*_*.R. 6 mysql macos docker docker-compose

我有这样一个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:
Run Code Online (Sandbox Code Playgroud)

我想编辑sql_mode

./docker/my.cnf 包含:

[mysqld]
sql_mode=""
Run Code Online (Sandbox Code Playgroud)

但是,当我从本地计算机连接到db并运行时,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
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Bra*_*rad 7

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

command: --sql_mode=""
Run Code Online (Sandbox Code Playgroud)

所以就是:

    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=""
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很好的解决方案,干净 (2认同)

小智 5

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


D.R*_*.R. -3

我变了

- ./docker/my.cnf:/etc/my.cnf
Run Code Online (Sandbox Code Playgroud)

- ./docker/my.cnf:/etc/alternatives/my.cnf
Run Code Online (Sandbox Code Playgroud)

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