本文主要介绍docker灵活构建PHP环境的实现。通过示例代码进行了非常详细的介绍,对大家的学习或者工作都有一定的参考价值。有需要的朋友下面和边肖一起学习。
使用docker构建一个灵活的在线php环境有时候你可能不需要其他人已经集成的一些包或映像
我们可以使用以下方法逐一构建自己需要的环境结构,最终实现一键自动部署
逐步点亮码头工人技能树
*首先将clone[server]项目放在服务器的根目录下(以后也可以构建自己风格的环境结构)
(一阶)使用docker构建
1。下载图像
FPM选择冒号后的版本
码头工人拉nginx
DockpullMySQL:5.7不要求忽略本地数据库。
Dockerpullredis:3.2不要求忽略本地redis。
Docker图像查看所有下载的图像
2。下载映像后运行容器[请注意下面使用-link方法的创建顺序]
注意:
-i表示允许我们对容器进行 *** 作
-t表示在新容器中指定一个终端
-d表示容器在后台执行
/bin/bash。Br/]
-name为容器指定一个名称
-v将容器内的路径挂载到主机路径
-privileged=true赋予容器权限,在挂载目录后,容器可以访问目录下的文件或目录
[/
<运行mysql容器>:
dockerrun--namemydb-p3306:3306-eMYSQL_ROOT_PASSWORD=123456-dmysql:5.7注意:-MYSQL_ROOT_PASSWORD=123456设置MYSQL的初始密码
如果您不需要构建本地数据库,请直接进入下一步
<运行redis容器>:
dockerrun--namemyredis-p6379:6379-dredis:3.2注意:如果您不需要构建本地redis,请直接进入下一步
<运行php容器>:
dockerrun-d-p9000:9000--namemyphp-v/server/www:/var/www/html-v/server/php:/usr/local/etc/php--linkmydb:mydb--linkmyredis:myredis--privileged=truephp:7.2-fpm注意:如果不需要构建本地数据库或redis,可以省略-LINKMYDB:MYDB-LINKmyredis:myredis
注意-v挂载空文件夹会覆盖容器的内容,所以应该提前准备好配置文件
<运行nginx容器>:
dockerrun--namemynginx-d-p80:80-v/server/www:/usr/share/nginx/html-v/server/nginx:/etc/nginx-v/server/logs/nginx.logs:/var/log/nginx--linkmyphp:myphp--privileged=truenginx注意:
容器内的路径在-v语句的冒号之后。我把nginx的web项目目录配置目录日志目录挂载到我准备好的/server目录
-linkmyphp:myphp通过别名myphp连接nginx容器和php容器,所以不再需要指定myphp容器的IP
Dockerps-a检查所有容器运行成功,这里的环境基本搭建完成。
目录挂载后,可以通过修改相应挂载目录下的配置文件直接修改nginx配置,而无需进入容器修改配置。
转到/server/nginx/conf.d/default.conf
3。PHP扩展库安装
Dockexec-timmyphp/bin/bash首先进入容器。
dock-PHP-ext-安装PDOpdo_mysql安装pdo_mysql扩展
docker-php-ext-installredis
注意:此时,redis.so会收到一条错误消息,因为PHP源文件中不包含某些扩展
方法1:
tarzxvf/server/PHP_lib/redis-4.1.0.tgz解压下载的redis扩展包。
dockerCP/server/PHP_lib/redis-4.1.0myPHP:/usr/src/PHP/ext/redis将扩展放入容器中,然后安装。
注意:
将扩展包直接放入容器的ext目录可能会报错:没有这样的容器:path:myphp:/usr/src/PHP/ext
可以打开一个额外的服务器窗口进入PHP容器,执行docker-php-ext-installredis。这时你会报错:/Usr/src/php/ext/redis不存在
保持这个状态然后在你的第一个服务器窗口执行最后一个命令,就会成功
(具体原因未知,但是你要先执行一次docker-php-ext-install命令,才会在容器中打开/Usr/src/PHP。
方法二:
注意:
推荐官方使用PECL(PHP的扩展库仓库,由PEAR打包)。使用peclinstall安装扩展,然后使用官方的docker-PHP-ext-enable
快捷脚本来启用扩展
DockrestartMyPHP安装扩展,退出容器并重启容器。
*其他命令
Dockerstop$(dockerps-q)停止所有容器。
Dockerrm$(dockerps-aq)删除所有容器
删除所有镜像
Dockinspectmyphp查看容器配置信息
*构建您自己的目录结构
您还可以构建自己的服务器目录结构。首先你要知道挂载一个空文件夹会清空空容器中的所有内容,所以在挂载之前要先拷贝一下
。例如,创建一个临时容器sudodockerrun-namemynginx-p80:80-it-dnginx。Br/]
进入容器查看你想要的配置文件的目录地址,例如:/etc/nginx退出容器
将容器中你想要的目录结构复制到主机上,例如:DockerCPMyDB:/etc/nginx/server/nginx
[/h/删除容器,新建容器时就可以挂载目录了。之后可以直接快速修改nginx的配置文件
DockerRun-namemynginx-d-p80:80-v/server/nginx:/etc/nginx-linkmyPHP:myPHP-privileged。
(二阶)docker-compose自动构造
完成以上步骤后,你对docker的基本容器 *** 作有了初步的了解
docker-compose排列容器。例如,您有一个php映像、一个mysql映像和一个nginx映像。如果没有docker-compose,
那么每次启动都需要键入每个容器的启动参数,环境变量,容器命名,指定不同容器的链接参数等等。
比较繁琐。使用docker-composer后,可以一次性在docker-composer.yml文件中编写这些命令。以后,每次启动整个环境
(包括3个容器)时,只需点击一个docker-composerup命令
1.安装docker-compose
2.一键式部署环境
已经配置了/server/compose/docker-compose.yml。直接输入命令即可
对比上面运行容器的命令,docker_yml的配置结构和语义就一目了然了。
(第三阶)完成dokcer-compose和dockerfile的构造
Docker-compose用来实现一键 *** 作,但问题是PHP的扩展库要单独安装,所以这里需要Dockerfile来构建自定义容器镜像
实现真正的一键完成。
目录:
php的自定义dockerfile构建一个自定义镜像,同时安装扩展。所有dockerfile配置完成后,docker-compose.yml文件不需要
使用官方镜像image:php-fpm:7.2,直接构建:。/PHP直接引用目录中配置的dockerfile[/Br/]
最后提示:一旦创建了映像,下次docker-compose将直接取已有的映像,而不是构建它。如果您修改Dockerfile配置,请记得删除之前的图像
以上就是docker的所有环境配置方法
*当您需要使用shell来调度php在主机上执行脚本时
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)