当前位置:   article > 正文

docker篇2-使用Docker构建PHP开发环境

docker篇2-使用Docker构建PHP开发环境

PHP开发环境中的一些服务之间是需要通信的,例如nginx和php-fpm,PHP和MySQL,PHP和redis等都需要通信,如果采用宿主机端口映射的方式可以满足网络通信但是效率和安全性都会减弱,所以可以使用Docker的网络指令来构建一个互通的网络,下面列出常用的网络命令。

创建网络

docker network create dev-net --driver bridge

查看网络

docker network ls 删除网络 docker network rm 网络名称

假设创建了一个dev-net的网络,在使用docker run 创建容器的时候加上–network dev-net参数即可将容器加入此网络,加入到同一网络的服务是可以使用容器名称进行通信的,有了这层桥接网络PHP各个组件服务之间的通信就很容易解决了,首先拉取镜像

docker pull php:7.3-fpm docker pull nginx docker pull mysql:latest
docker pull redis:latest

假设我们需要将代码放置在目录/home/wwwroot/default/,首先需要执行mkdir -p /home/wwwroot/default/ 创建目录

然后执行启动各个容器 例如:

#第一次运行时需要设置mysql密码 docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -d --network dev-net mysql:latest
–default-authentication-plugin=mysql_native_password

#nginx默认的web目录是/usr/share/nginx/html 和宿主目录 /home/wwwroot/default/做一个映射关系 docker run -p 80:80 -v
/home/wwwroot/default/:/usr/share/nginx/html
–name nginx80 --network dev-net -d nginx:latest

#PHP中的目录也做同样的映射 docker run --name php-fpm --network dev-net -d
-v /home/wwwroot/default/:/usr/share/nginx/html php:7.3-fpm

#运行redis docker run -d --name redis redis:latest

容器启动后需要配置nginx和php-fpm之间进行通信

#从nginx容器拷贝配置文件到宿主机的当前目录 docker cp nginx80:/etc/nginx/conf.d/default.conf ./
#编辑配置文件 vi default.conf

将nginx的配置文件修改如下

location ~ \.php$ {
     root           /usr/share/nginx/html;
     fastcgi_pass   php-fpm:9000;
     fastcgi_index  index.php;
     fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/html/$fastcgi_script_name;
     include        fastcgi_params;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

拷贝配置文件到nginx容器内

docker cp ./default.conf nginx80:/etc/nginx/conf.d/default.conf
  • 1

进入nginx容器内部重新载入nginx配置

docker exec -it nginx80 /bin/bash
#重新载入nginx配置 /usr/sbin/nginx -s reload
#退出容器 exi

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/715457
推荐阅读
相关标签
  

闽ICP备14008679号