最近使用Docker搭建了一个MySQL环境,但挂载MySQL配置文件却出现了问题。
我在Dockerfile中加入了挂载配置文件的命令:
COPY my.cnf /etc/mysql/my.cnf
然后在docker-compose.yml文件中配置挂载:
volumes:- ./mysql/my.cnf:/etc/mysql/my.cnf- ./mysql/data:/var/lib/mysql
但在启动容器后,MySQL使用的仍然是原来的my.cnf文件,我的修改没有生效。
查阅了一些资料后,发现这是因为MySQL容器中存在一个默认的配置文件,挂载的配置文件并没有被覆盖。
解决方法有两种:
一、删除MySQL容器中的默认配置文件。在启动容器之前,先进入容器内部,删除/etc/mysql/my.cnf文件,然后再启动容器。
docker exec -it mysql_container_name /bin/bashrm /etc/mysql/my.cnfexitdocker restart mysql_container_name
二、将挂载的配置文件命名为其他文件名,在启动容器时指定新的配置文件名:
volumes:- ./mysql/my.cnf:/etc/mysql/myconf.cnf- ./mysql/data:/var/lib/mysqlcommand: --defaults-file=/etc/mysql/myconf.cnf
以上两种方法均能解决挂载MySQL配置文件无效的问题。