当前位置:   article > 正文

docker部署php环境运行web项目_docker部署web项目

docker部署web项目

写这篇文章的目的一个是自己做个笔记,以防以后忘记,再一个网上关于运行php容器到部署web项目的资料实在是少,都是互相复制一下,无法真正运用到实际生产环境中。

为什么要用docker,docker基本的一些命令不再本文章的讨论范围。

docker部署web项目需要用到几个服务:php,nginx,redis等等,本篇文章讲一下PHP,nginx以及redis的使用,更多的服务流程跟启动这三个服务雷同。php使用5.6版本。当然也可以使用最新版,流程是一样的

首先把先把用到的镜像拉到本地:

  1. docker pull php:5.6-fpm
  2. docker pull nginx
  3. docker pull redis

启动之前先创建一个docker网络,使用docker来连接多个容器。

docker network create -d bridge php-net

因为代码我们都是在本地修改,然后做个映射到各个docker中去就可以了。首先启动redis,因为redis不需要做映射,启动最简单:

docker run --name redis-web -d --network php-net -p 6380:6379 redis

下面开始启动php跟nginx容器,因为我们是在本地开发,所以需要挂载主机web目录到容器,假设我们本地web目录为/www/wwwroot/ac,然后由容器服务来运行这个web项目

  1. docker run --name php-web -d --network php-net -p 9001:9000 -v /www/wwwroot/ac:/data php:5.6-fpm
  2. docker run --name nginx-web -d --network php-net -p 80:80 -v /www/wwwroot/ac:/data nginx

这样3个容器就启动了,他们在统一docker网络内,可以通过ip互相进行访问。

接下来划重点部分  配置nginx,以及安装php扩展。因为官方的php是一个纯净的php环境,需要我们一个个扩展去安装。

首先进入nginx容器找到nginx配置文件配置

  1. docker exec -it nginx-web bash
  2. cd /etc/nginx/conf.d
  3. vim default.conf

在default.conf配置文件中填入以下内容

  1. server{
  2. listen 80;
  3. server localhost;
  4. location / {
  5. root /data; #对应主机挂载到nginx容器中的/data代码目录
  6. index index.php index.html index.htm;
  7. }
  8. location ~\.php(.*)$ {
  9. root /data; #对应主机挂在到php容器中的/data代码目录
  10. fastcgi_pass 172.19.0.3:9000; #此地址为php容器的内网ip
  11. fastcgi_index index.php;
  12. fastcgi_param SCRIPT_FILENAME /data$fastcgi_script_name;
  13. fastcgi_param PATH_INFO $1; #此行配置pathinfo,tp框架必须使用pathinfo
  14. include fastcgi_params;
  15. }
  16. }

编辑完配置文件之后进行重载配置

service nginx reload

之后再进入到php-web容器里面开始安装用到的扩展,这里我们安装几个比较常用的扩展,流程基本都一样

  1. docker exec -it php-web bash
  2. cd /usr/local/bin
  3. ./docker-php-ext-install pdo_mysql
  4. ./docker-php-ext-install mysql
  5. docker-php-ext-install bcmath
  6. docker-php-ext-install mbstring
  7. apt-get update && apt-get install -y libfreetype6-dev libjpeg62-turbo-dev libpng-dev
  8. docker-php-ext-install -j$(nproc) iconv
  9. docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
  10. docker-php-ext-install -j$(nproc) gd
  11. pecl install redis-4.0.1 && pecl install xdebug-2.6.0 && docker-php-ext-enable redis xdebug

一口气安装了mysql,bcmath,gd,mbstring,redis等扩展

重启php容器服务

docker restart php-web

这样一个完整的web项目就使用docker部署完成了,没有安装mysql容器,因为安装方式雷同,在连接的时候注意使用他们的内网ip去连接,如果想要连接宿主机,那么使用ifconfg命令找到docker0开头的那行,那个ip就是宿主机的ip,通过这个ip可以请求宿主机,比如我们在宿主机上又个mysql,那么可以使用ip:port来访问,容器之间也是使用内网ip来互相访问,进入每个容器然后cat /etc/hosts来获取ip

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

闽ICP备14008679号