🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Linux部署Docker问题总结 ![](https://img.kancloud.cn/60/62/60625e20c6d31072da885e0b44f5b3f7_480x270.png) > #### 手册阅读须知: > 本手册仅针对Linux版本做详情介绍,本手册仅针对Docker部署版本(使用左右键(`<-- 和 -->`)翻页阅读) # 问题: * [ ] > ### **`问题一`**: centos7.2 系统安装完docker 和docker-compose后,将docker-compose.yml和对应文件(DockerFile等)及文件夹还有.env文件创建完成后,直径使用```docker-compose up -d```,出现下图报错yum无法使用: ![](https://img.kancloud.cn/72/94/729484fc1309f427883b2563e552d000_820x277.png) ![](https://img.kancloud.cn/28/6d/286d53174f242e25262320901ee2a94d_779x432.png) 解决方法:直接更新yum源,因为yum版本太老,需要更新yum,更新yum命令为:<span style="color:red;font-size:20px;font-weight:bolder">```yum clean all && yum update```</span> * [ ] > ### **`问题二`**: centos7.2安装docker 出现以下错误:configuration option "php_ini" is not set to php.ini location ![](https://img.kancloud.cn/f1/f5/f1f5f6c602306404b9637789d6f337a9_907x143.png) 解决方法: * [ ] > ### **`问题三`**: 安装完成以后,进入容器,使用Vim查询文件内的内容,提示无权限(原因是指定了特定的普通用户),下图所示: ![](https://img.kancloud.cn/40/8e/408ef75c9b31c4cba09bf0b34654f41d_721x83.png) 解决方法:直接使用超级用户root用户或创建一个用户(给指定用户容器的权限,百度查资料),使用创建的用户,进入容器,执行安装Vim命令即可,这里我使用的root直接进入容器,命令为:```docker exec -it --user root lnmp_php /bin/bash```即可进入容器,进行安装Vim包操作 * [ ] > ### **`问题四`**: # docker-compose.yml 文件更改后重新启动加载更改后的内容 命令:docker-compose up --force-recreate -d * [ ] > ### **`问题五`**: 安装完成后,我们会发现其他服务都正常运行,但是mysql却一直在重试重启,使用docker-compose命令查看mysql日志(命令:docker-compose logs mysql)提示报错:```# Could not open file ‘/var/log/mysqld.log‘ for error logging: Permission denied```,截图所示: ![](https://img.kancloud.cn/8a/19/8a19487abce80ba89e388e3312117943_1343x450.png) 解决方法:在mysql容器外部,进入mysql目录,给log赋权限777,重启mysql服务即可【以下3条是解决问题命令】 1:切换目录命令:```cd /workspace/html/config_dev/mysql/``` 2:执行赋权限命令:```chmod -R 777 ./log/*``` 3:切换目录命令:```docker-compose restart mysql(是服务名,不是容器别名)``` 4:mysql容器成功启动截图: ![](https://img.kancloud.cn/aa/b9/aab9e21665e5873a2b424fa115a58722_1481x349.png) * [ ] > ### **`问题六`**: mysql启动成功后,使用任意账号或密码都可以连接mysql,是因为mysql数据库中的user表没有设置密码(docker-compose 其实没有设置mysql密码成功),我们要实现的是远程连接+账号密码访问数据库 解决方法: 1:在mysql容中,进入mysql 命令1:docker exec -it lnmp_mysql(容器ID或名) /bin/bash; 命令2:mysql -u root -p; 命令3:随便输入密码,之后进入mysql 2:use mysql;(使用mysql数据库) 3:给mysql重新设置密码:```update user set authentication_string=PASSWORD("111111") where user='root';``` 4:执行命令:```update user set plugin="mysql_native_password";``` 5:刷新权限:```flush privileges;``` 6:此时我们只能在服务器内部连接mysql,如果需要外部,可以将root的localhost权限给到%即可,具体操作如下: 操作前我们可以通过命令:```select host, user from user;```查看用户和对应权限【下图可知权限仅在本地连接】 ![](https://img.kancloud.cn/22/d4/22d431658e53379f8b053c2dc0d64e3b_331x182.png) 6.1:执行开启远程访问mysql命令:```update user set Host='%' where User='root';``` 6.2:刷新权限:```flush privileges;``` 6.3:以上两步即可实现mysql远程访问链接,使用navicate 连接如下: ![](https://img.kancloud.cn/d0/59/d0593e9e0ac5ab35549a656e50a744b7_1462x805.png) * [ ] > ### **`问题七`**: 安装完成后,需要给php,mysql指定环境变量,否则如果是使用宝塔,之前安装过php和mysql,直接使用命令:```php -v```(php版本信息) 或 ``` mysql -V```(mysql版本信息),就会查询到之前在系统安装的php或mysql版本 解决方法: