问题
我在windows系统中编写了my.cnf,然后通过xftp上传到Linux服务器,接着把这个配置文件挂载到docker中,mysql就是一直Restarting,也就是启动不成功。无法进入进入容器。之前弄不明白,没办法只能删除容器。
现在经过一定的积累,知道怎么去解决问题了。
首先,问题的细节在于:windows平台下和linux平台下文件内容格式不同。windows下的配置文件不能直接上传到linux系统上,否则不成功。
解决办法:之前项目也出现了这个问题,参考这篇博客解决
在Linux中执行.sh脚本,异常/bin/sh^M: bad interpreter: No such file or directory

然后将配置文件拷贝到容器中,或者直接挂载:
Docker 在容器内修改配置文件后,重启后,使用ps查看却没有起来。
查看错误信息发现是刚刚修改的配置文件出错,但是想通过exec 命令 却进入不了容器。
这时候就用到了 container cp 命令
使用 docker start -i 【容器】,获得出错信息,找到错误文件位置
使用 docker container cp 容器名:容器内修改的文件路径(中间冒号必须) 本地路径 。将文件拷贝到本地(此命令需要高权)。拷贝到本地后,把配置文件修改成为正确的。
使用docker container cp 本地路径 容器名:容器内修改的文件路径(中间冒号必须)。这条命令将修改好的文件覆盖到容器内。
重新docker start 容器,容器成功运行
附docker-compose.yaml
services:
my_mysql:
image: mysql:8.0
container_name: my_mysql
command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1
restart: always
volumes:
- /root/jzt/docker/mysql/data:/var/lib/mysql/ #映射mysql的数据目录到宿主机,保存数据
- /root/jzt/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf #把mysql的配置文件映射到容器的相应目录
- /root/jzt/docker/mysql/logs:/logs
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
# 初始化用户(不能是root 会报错, 后续需要给新用户赋予权限)
MYSQL_USER: nacos
# 用户密码
MYSQL_PASSWORD: nacos
版权声明:本文为zimojiang原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。