创建项目目录
我们会把这个项目的相关文件,集中放到一个目录
demophp:
创建一个Dockerfile,其中包含了Docker的指令。在demophp目录下创建
Dockerfile,文件名必须是Dockerfile
Dockerfile
FROM php:7.3
COPY . /var/www/php
WORKDIR /var/www/php
CMD ["php", "./demo.php"]所有指令都大写,这是惯例
现在demophp目录下有2个文件:
Dockerfile
demo.php
<?php
//demo.php
echo "This is php app - lizhenqiu.com"构建 Docker 镜像
切换到demophp目录,运行
docker build -t demophp .命令,
构建Docker镜像。Docker镜像可以任意取名,此处命名为demophp
最后使用
docker images查看镜像,可以看到构建镜像成功。接下来就可以运行镜像了
运行 Docker 镜像
执行
docker run demophp命令运行镜像:
[root@demophp docker-php]# docker run demophp
This is php app - lizhenqiu.com
[root@demophp docker-php]#可以看到,demophp镜像成功运行,输出了一条信息。
Docker
进入数据库内部
,我这里数据库名为book
查看当前字符集
Mysql:[Err] 1292 - Incorrect datetime value: .date(Y-m-d h:i:s)...解决方案
解决方法:
修改my.ini配置文件
my.ini中查找sql-mode
我的MySQL版本为Server version: 5.6.47 MySQL Community Server (GPL)
默认为:sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
将STRICT_TRANS_TABLES,删掉保存重启mysql
如果版本高的话默认可能是:
sql_mode="STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER
将NO_ZERO_DATE,NO_ZERO_IN_DATE,删掉保存重启mysql即可
Navicat导入sql数据
mysql 报错[Err] [Dtf] 1292 - Incorrect datetime value: '0000-00-00 00:00:00' for column 'uploadtime' at row 9 With statement:......
搜索之后发现原来是因为 msyql5.7 及以上不允许时间戳字段插入 ‘0000-00-00’ 数据,
修复方法也比较简单,去掉sql_model 中的 NO_ZERO_DATE 配置即可
查看可以执行SQL
修改方法有好几个,
最简单的就是执行SQL
还有一个修改配置文件
保存退出后重启mysql
mysql 高版本 sql_mode=only_full_group_by 问题解决方法
完美解决方案
需修改mysql配置文件,
通过手动添加sql_mode的方式强制指定不需要ONLY_FULL_GROUP_BY属性,
my.cnf位于etc文件夹下,vim下光标移到最后,添加如下:
重启mysql服务
SQLSTATE[HY000] [2002] Connection refused
使用docker搭建lnmp环境,使用的是分容器的搭建方案
框架使用thinkphp,想要连接数据MySQL,一直显示“SQLSTATE[HY000] [2002] Connection refused”
数据库配置host填的是localhost,后面改成了127.0.0.1,都是连接不了
还以为是数据库用户权限问题,
新建了一个用户,刷新了权限,结果还是不行
想了好久,原来都是分容器的问题,
由于采用了分容器的搭建方案,
在php的容器内连接127.0.0.1或者localhost,肯定是连接不了数据库MySQL的
[blue]应该把数据库配置host填成MySQL容器名称,[/blue]
我本地的MySQL容器名称为mysql,
改成这样就可以连接
Docker启动不了,提示 Docker failed to initialize
将 C:\Users\Administrator\AppData\Roaming 目录下Docker目录改名为Docker_backup(实际上就是删除并备份),
启动 Docker for windows.exe,提示docker没有启动,
点击启动docker一切恢复如初,原来的容器和镜像都在。