资讯专栏INFORMATION COLUMN

nginx、php-fpm 与 docker

lemon / 1711人阅读

摘要:是本地文件的存储目录,是容器内文件的存储目录,表示只读。编辑配置文件本地存储路径配置文件内容说明表示服务的,下文还会提及。访问时,让执行,这个路径经转换成。

看完 docker 官方教程,想搭个本地 php 开发环境,可搜了一圈,也没找到特别满意的文章,顺手总结一个。

假设

你知道 nginx、php-fpm 是什么

你了解 docker 的基本命令

运行环境

MacBook Pro,OSX 10.11.5

启动 php-fpm

解释执行 php 需要 php-fpm,先让它运行起来:

docker run --name dream-php -d 
    -v ~/Workspace/tmp/www:/var/www/html:ro 
    php:7.1-fpm

说明:

dream-php 是容器的名字。

~/Workspace/tmp/www 是本地 php 文件的存储目录,/var/www/html 是容器内 php 文件的存储目录,ro 表示只读。

编辑 nginx 配置文件

本地存储路径:

~/Workspace/tmp/docker/nginx/conf.d/default.conf

配置文件内容:

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ .php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /var/www/html/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

说明:

php:9000 表示 php-fpm 服务的 URL,下文还会提及。

/var/www/html 是 dream-php 中 php 文件的存储路径,经 docker 映射,变成本地路径 ~/Workspace/tmp/www(可以再看一眼 php-fpm 启动命令)

启动 nginx
docker run --name dream-nginx -p 80:80 -d 
    -v ~/Workspace/tmp/www:/usr/share/nginx/html:ro 
    -v ~/Workspace/tmp/docker/nginx/conf.d:/etc/nginx/conf.d:ro 
    --link dream-php:php 
    nginx

说明:

-p 80:80 用于添加端口映射,把 dream-nginx 中的 80 端口暴露出来。

~/Workspace/tmp/www 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。

~/Workspace/tmp/docker/nginx/conf.d 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。

--link dream-php:php 把 dream-php 的网络并入 dream-nginx,并通过修改 dream-nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.1,让 nginx 通过 php:9000 访问 php-fpm。

测试结果

在 ~/Workspace/tmp/www 下放两个文件:

index.html

Hello World

phpinfo.php


接下来看结果吧:

http://localhost

http://localhost/phpinfo.php

如果看到 Hello World 和熟悉的 phpinfo,那么大功告成。

访问 index.html 时,nginx 读的是 /usr/share/nginx/html/index.html,这个路径经 dream.nginx 转换变成本地的 ~/Workspace/tmp/www/index.html。

访问 phpinfo.php 时,nginx 让 php-frm 执行 /var/www/html/phpinfo.php,这个路径经 dream.php 转换成 ~/Workspace/tmp/www/phpinfo.php。

FAQ

怎样观察容器内文件系统:

docker exec -it dream-nginx bash

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30502.html

相关文章

  • nginxphp-fpm docker

    摘要:是本地文件的存储目录,是容器内文件的存储目录,表示只读。编辑配置文件本地存储路径配置文件内容说明表示服务的,下文还会提及。访问时,让执行,这个路径经转换成。 看完 docker 官方教程,想搭个本地 php 开发环境,可搜了一圈,也没找到特别满意的文章,顺手总结一个。 假设 你知道 nginx、php-fpm 是什么 你了解 docker 的基本命令 运行环境 MacBook Pr...

    zollero 评论0 收藏0
  • nginxphp-fpm docker

    摘要:是本地文件的存储目录,是容器内文件的存储目录,表示只读。编辑配置文件本地存储路径配置文件内容说明表示服务的,下文还会提及。访问时,让执行,这个路径经转换成。 看完 docker 官方教程,想搭个本地 php 开发环境,可搜了一圈,也没找到特别满意的文章,顺手总结一个。 假设 你知道 nginx、php-fpm 是什么 你了解 docker 的基本命令 运行环境 MacBook Pr...

    fox_soyoung 评论0 收藏0
  • 面向生产和开发环境的LNP基础镜像

    摘要:地址这是一份适用于生产和开发环境的。目前已经在我司的生产环境上并运行良好。日常开发中也是基于此镜像进行的。如果想快速看看镜像里有啥东西,只需要运行其中替换成你实际的镜像。开发环境的使用单独运行这个容器是没有意义的。 GITHUB地址:https://github.com/banyancheu... 这是一份适用于生产和开发环境的 Dockerfile。 在 phuison/baseim...

    sshe 评论0 收藏0
  • 面向生产和开发环境的LNP基础镜像

    摘要:地址这是一份适用于生产和开发环境的。目前已经在我司的生产环境上并运行良好。日常开发中也是基于此镜像进行的。如果想快速看看镜像里有啥东西,只需要运行其中替换成你实际的镜像。开发环境的使用单独运行这个容器是没有意义的。 GITHUB地址:https://github.com/banyancheu... 这是一份适用于生产和开发环境的 Dockerfile。 在 phuison/baseim...

    wangzy2019 评论0 收藏0
  • 徒手用 Docker 构建自己的 PHP 开发环境

    摘要:用进行操作为在的工作区域,项目也是挂载在里面,所有我们可以直接在容器里运行。或者进入宿主机目录下用命令注意事项注意挂载路径构建失败时,注意容器内是否报错加速镜像。本文首发在我的博客徒手用构建自己的开发环境 1. 前言 1.1 为什么要用 Docker ? 是否有这样的场景,你搞了一个项目,在本地开发时需要搭建环境,放到线上时也需要搭建环境,到公司想暗戳戳玩一下要搭建环境,不搭还不行,因...

    CoreDump 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<