docker部署PHP项目

docker部署web项目需要用到几个服务:php,nginx等等。目前本文只用了nginx和php。
首先是拉取镜像

docker pull php:5.6-fpm
docker pull nginx

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

docker network create -d bridge php-net

先启动PHP容器

docker run --name php-web -d -p 8000:8000 --network php-net -v 你的虚拟机内php资源存放路径:/data(要在容器中存放该资源的路径) php:5.6-fpm(镜像)

之后在虚拟机中创建nginx的配置文件conf.d,填入一下内容

server{
    listen 80;
    server localhost;
    location / {
        root /data;  #对应虚拟机挂载到nginx容器中的/data代码目录
        index index.php index.html index.htm;
    }
    location ~\.php(.*)$ {
        root /data;     #对应主机挂在到php容器中的/data代码目录
        fastcgi_pass php容器的内网ip:8000;   #此地址为php容器的内网ip
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /data$fastcgi_script_name;  
        fastcgi_param PATH_INFO $1;   #此行配置pathinfo,tp框架必须使用pathinfo
        include fastcgi_params;
    }
}

启动nginx容器

docker run --name php-nginx --network php-net -d -p 80:80 -v 你的虚拟机内php资源存放路径:/data -v 你的conf.d文件存放路径:/etc/nginx/conf.d nginx(镜像)

进入php-web容器内安装php所需的扩展

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

安装了mysql,bcmath,gd,mbstring,redis等扩展。
重启php-web容器

docker restart php-web

你可能感兴趣的:(docker)