Nor*_*ger 11 mysql utf-8 docker-compose
我试图让我的mysql图像运行utf-8编码.我的docker-compose文件看起来像:
version: '2'
services:
db:
container_name: zoho-grabber-db-development
image: mysql:5.7
environment:
- MYSQL_ROOT_PASSWORD=topsecret
- MYSQL_DATABASE=development
- MYSQL_USER=devuser
- MYSQL_PASSWORD=secure
ports:
- "3306:3306"
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
Run Code Online (Sandbox Code Playgroud)
当我运行它,它说
$ docker-compose -f docker-compose.development.yml up
Removing zoho-grabber-db-development
Recreating 1b341fd7916e_1b341fd7916e_zoho-grabber-db-development
ERROR: for db Cannot start service db: oci runtime error: container_linux.go:247: starting container process caused "exec: \"mysqld\": executable file not found in $PATH"
ERROR: Encountered errors while bringing up the project.
Run Code Online (Sandbox Code Playgroud)
为什么找不到mysqld?以及如何实现我的目标?
Fot*_*tis 19
在其中使用command时docker-compose.yml会覆盖默认值,command并且entrypoint如docker-compose文档中所述.为了实现您的目标,我建议您按照"使用自定义MySQL配置文件"部分my.cnf中的docker image自述文件中所述安装卷.
所以command从您的docker-compose中删除并添加volumes例如.
...
volumes:
- mycustom.cnf:/etc/mysql/conf.d/custom.cnf
...
Run Code Online (Sandbox Code Playgroud)
并且容器将包括您的自定义配置作为服务器的配置
编辑-1
以下是您需要的自定义配置
mycustom.cnf
[mysqld]
character-set-server = utf8
collation-server = utf8_unicode_ci
skip-character-set-client-handshake
Run Code Online (Sandbox Code Playgroud)
rat*_*ath 12
对于这个问题的新手,我基本上可以通过如下方式使其mysqld摆脱command: mysqld ...困境:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_general_ci
restart: always
environment:
Run Code Online (Sandbox Code Playgroud)
这与官方MySQL映像的文档中通过docker stack deploy或docker-compose下的部分相同。
附带一提,您几乎从不希望utf8在MySQL中进行编码。你需要utf8mb4。有关更多信息,请参见此问答:MySQL中utf8mb4和utf8字符集有什么区别?
| 归档时间: |
|
| 查看次数: |
10263 次 |
| 最近记录: |