风火家人技术博客

技术总结精华贴

Tag: Docker

原创, 服务器, , ,

使用docker的那些坑

依然是拿建网站来说明docker搭建mysql,php,nginx。使用PHP搭建起来的网站,自然 nginx要依赖php, php要依赖mysql,先看下所需容器 1.首先docker一个mysql,我使用的是mysql8.0,获取就不说了,这里直接docker –name 是为新容器起的名字, -p 本地端口:容器端口  -v 本地路径:容器路径, -v可设置很多路径映射,配置信息,日志信息,数据库存放路径,等等,记得还要同步本地时间哦,不然东八区的总差8小时, -e 环境变量,这个ROOT password 可以让我们避免首次登陆时去log查询初始密码的麻烦。 如果发现docker启动不起来,可以使用下面命令查看原因。 因为上面命令是我反复测试得到的命令,每次删除container后都可以直接使用则个命令启动,也不用担心重新配置信息或者数据丢失。出来下面的目录设置配置外,其他几个自定义目录都可以留空 通过下面的命令进入到 mysql8的容器中,使用上面的初始密码登录,需要提醒的是mysql8授权用户的时候,需要先创建相关用户,在赋予权限,不可一次执行。 现在我已经能正常使用数据库了,接下来是docker php-fpm。使用下面的命令创建php-fpm的容器,拉取php的fpm的最新版就行了 /data/www是我部署的网站,里面含有好几个站点,这里直接全部映射过去,php/extensions的相关扩展需要在启动docker后,进入docker中安装,比如下面是进入php的docker中安装pdo_mysql的扩展命令,最好在进入安装前,先打开php.ini中相应的扩展,如果不打开,创建后会在一个子目录下创建一个相应配置文件,并设置为开启,虽然结果都一样,但最好还是能统一在php.ini中配置。 这个docker命令中 我们使用 –link mysql8:mysql来把 mysql的网络段和php的网络段打通,我们可以进入php的docker中查看 /etc/hosts 里面会帮我们绑定mysql的IP,这样php就能够正常访问到mysql的网络中,以便访问数据库。 这里面的坑就是很多时候我们访问访问php地址的时候都是找不到文件,这个时候就需要你确保是否将网站路径映射到php docker中的正确位置了, 可以看到我使用了两次 -v /data/www的映射,这是因为才安装好的php docker 默认访问网站根目录是/etc/nginx/html, 我/data/www/中有html文件夹,所以我只绑定了前面, 而 -v /data/www:/data/www 则是因为我自定义了其他站点配置信息里面的目录都使用的/data/www/zizhandian的方式。

Read More