Docker搭建PHP运行环境

这篇具有很好参考价值的文章主要介绍了Docker搭建PHP运行环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

Docker 安装 PHP

Docker 安装 Nginx 

​编辑运行nginx容器

nginx安装成功

Nginx + PHP 部署PHP项目

启动 PHP: 

启动 nginx:

查看正在运行的容器: 

访问域名测试搭建结果

Docker相关命令描述


Docker 安装 PHP

  • 这里我们拉取官方的镜像,标签为7.1-fpm 
docker pull php:7.1-fpm

 等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为php,标签为7.1-fpm的镜像。

docker php,docker,php,docker,运维

Docker 安装 Nginx 

 访问 Nginx 镜像库地址: Docker。

可以通过 Sort by 查看其他版本的 Nginx,默认是最新版本 nginx:latest。 

  • 这里我们拉取官方的最新版本的镜像: 
docker pull nginx:latest
  •  使用以下命令来查看是否已安装了 nginx:

运行nginx容器

  • 安装完成后,我们可以使用以下命令来运行 nginx 容器:
docker run --name nginx-test -p 8080:80 -d nginx

参数说明:

  • --name nginx-test:容器名称。
  • -p 8080:80: 端口进行映射,将本地 8080 端口映射到容器内部的 80 端口。
  • -d nginx: 设置容器在在后台一直运行

 docker php,docker,php,docker,运维

nginx安装成功

  • 最后我们可以通过浏览器可以直接访问 8080 端口的 nginx 服务: 

docker php,docker,php,docker,运维

Nginx + PHP 部署PHP项目

启动 PHP: 

docker run --name  myphp-fpm -p 9000:9000 -v /var/www/blog:/www  -d php:7.1-fpm

命令说明:

  • --name myphp-fpm : 将容器命名为 myphp-fpm。

  • -v /var/www/blog:/www : 将主机中PHP项目目录挂载到容器的 /www目录,在容器内访问 /www 就相当于访问宿主机的 /var/www/blog

  • php:7.1-fpm 镜像名

  • 创建一个存放nginx配置文件的目录。这个目录等下要挂载到容器里。
mkdir -p /opt/docker/nginx/conf.d

 docker php,docker,php,docker,运维

  • 创建一个空配置文件
vim testdocker.conf
  •  在该目录下添加 /opt/docker/nginx/conf.d/testdocker.conf 文件,内容如下:
server {
    # 监听端口。此端口不能被占用了
    listen       80;
    # 此站点的域名。直接在宿主机配置一个host域名,或者在阿里云等云服务商那里解析过来。
    server_name  www.testdocker.com;
    # 此站点的入口目录。这里要注意,/www/public/ 路径是容器内的路径。因为等下会把宿主机的项目路径挂载到容器内的 /www 目录。所以这里访问 /www就相当于访问宿主机的项目路径。
    root  /www/public/;

    #配置url的伪静态设置
    location / {
       autoindex off;
       if (!-e $request_filename){
          rewrite ^/(.*)$ /index.php?/$1 last;        break;
       }
       #伪静态设置
       try_files $uri $uri/ /index.php$is_args$query_string;
       index index.php index.html index.htm;
    }

    #配置url处理及转发PHP请求
    location ~ \.php(/|$) {
        # 入口文件
        fastcgi_index index.php;
        # PHP项目的IP和端口。这是php-fpm的地址。由于nginx处理不了PHP代码,所以需要把请求转发给php-fpm进行处理。
        fastcgi_pass  10.10.10.68:9000;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include       fastcgi_params;
    }
    # 用户的访问日志。注意,这目录必须存在,否则nginx将启动不了。由于我把宿主机的项目路径www挂载到了容器内的/www目录,所以宿主机的项目路径www里需要有wwwlogs目录。
    access_log  /var/log/nginx/docker_nginx_access.log;
    # 错误日志
    error_log  /var/log/nginx/docker_nginx_error.log;
}

配置文件说明:

  • 10.10.10.68:9000:表示 php-fpm 服务的 URL,下面我们会具体说明。
  • root  /www/public/:项目的根目录,这里之所以写成( /www/public),是因为在启动PHP时,已经将项目的根目录(/var/www/blog)挂载到容器内的/www目录了

启动 nginx:

docker run --name my-nginx -p 80:80 -d -v /var/www/blog:/www -v /opt/docker/nginx/conf.d:/etc/nginx/conf.d nginx
  • -v /var/www/blog:/www 把宿主机的项目目录 /var/www/blog 挂载到容器内的 /www 目录。容器内访问 /www 就相当于访问 /var/www/blog
  • -v /opt/docker/nginx/conf.d:/etc/nginx/conf.d 把宿主机的配置目录,挂载到容器内nginx的配置目录。nginx 会自动去加载这目录内所有的配置文件。/opt/docker/nginx/conf.d 里建议每个站点对应一个配置文件。
  • -d 后台静默运行

查看正在运行的容器: 

  • 真确的结果如下图(图一):

docker php,docker,php,docker,运维

  • 错误的结果如下图(图二):

docker php,docker,php,docker,运维

  • 图一和图二的区别:

图一端口(9000)生效,图二端口(9000)没生效,如果php-fpm没有端口,最后导致的结果就是,客户端通过域名访问项目,在通过nginx请求php-fpm时会提示:502
nginx错误提示是:connect() failed (111: Connection refused) while connecting to upstream

访问域名测试搭建结果

docker php,docker,php,docker,运维

Docker相关命令描述

docker container attach     附加到正在运行的容器
docker container commit     从容器的更改创建一个新的映像
docker container cp         在容器和本地文件系统之间复制文件/文件夹
docker container create     创建一个新的容器
docker container diff       检查容器文件系统上文件或目录的更改
docker container exec       在运行容器中运行命令
docker container export     将容器的文件系统导出为tar存档
docker container inspect    显示一个或多个容器的详细信息
docker container kill       杀死一个或多个运行容器
docker container logs       获取容器的日志
docker container ls         列出容器
docker container pause      暂停一个或多个容器内的所有进程
docker container port       列出端口映射或容器的特定映射
docker container prune      取出所有停止的容器
docker container rename     重命名容器
docker container restart    重新启动一个或多个容器
docker container rm         删除(移除)一个或多个容器
docker container run        在新容器中运行命令
docker container start      启动一个或多个停止的容器
docker container stats      显示容器的实时流资源使用统计信息
docker container stop       停止一个或多个运行容器
docker container top        显示容器的正在运行的进程
docker container unpause    取消暂停一个或多个容器内的所有流程
docker container update     更新一个或多个容器的配置
docker container wait       阻止一个或多个容器停止,然后打印退出代码

以上命令中的 container 可以省略不写,
例如命令:docker container stop 容器ID/容器名称 等同 docker stop 容器ID/容器名称文章来源地址https://www.toymoban.com/news/detail-823278.html

到了这里,关于Docker搭建PHP运行环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker 搭建php环境(踩坑经验!!)

    本次安装的推荐配置: CentOS 7 (迅雷种子 http://ftp.nara.wide.ad.jp/pub/Linux/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.torrent) nginx 1.24.0 mysql 5.7.43 php 7.4.3-fpm redis 7.2.0    2023年12月21日:后面发现,一定要加上 docker run的时候一定要加上 --ip 172.18.10.1用来固定ip,不然重启变变,这样容

    2024年02月12日
    浏览(32)
  • Docker的配置和部署,并搭建php和nginx环境

    服务器环境:CentOS 7.6 说下体验: 通过安装进度还是有些报错出现的,但是一向“兼容不错的宝塔”还是对他抱有一线希望。 最后还是安装成功了。  装好了,如何使用? Docker 是基于命令行使用的,那现在通过一些实际问题去使用一些命令! 1.首先查看是否安装成功。通过

    2024年02月09日
    浏览(43)
  • 基于Jenkins自动打包并部署docker、PHP环境,ansible部署-------从小白到大神之路之学习运维第86天

    第四阶段提升 时  间:2023年8月23日 参加人:全班人员 内  容: 基于Jenkins部署docker、PHP环境 目录 一、环境部署 (一)实验环境,服务器设置 (二)所有主机关闭防火墙和selinux,修改主机名 (三)配置git主机 (四)配置jenkins主机 (五)Jenkins配置 二、基于Jenkins自动打包

    2024年02月11日
    浏览(50)
  • Docker搭建LNMP环境实战(08):安装php-fpm

    在文件夹:/mnt/hgfs/dockers/test_site/www目录下创建文件:test.php,内容为: 在文件夹:/mnt/hgfs/dockers/test_site/compose下创建文件:test_site_php.yml,内容如下: 注意:此文件中网络的名称和nginx配置文件中网络的名称是相同的,都是:test_site_network 注意:最后一段为新加的修改 图1 f

    2024年04月13日
    浏览(39)
  • 使用Docker Dockerfile构建php LNMP集成开发环境,并运行Thinkphp5

    系统:MAC、Windows10 Docker版本:Docker version 23.0.5 Docker Desktop:Dockerdesktop官方地址 这篇主要介绍如何在Mac、Windows10使用docker搭建LNMP集成开发环境。下面我会写Dockerfile编译安装Nginx+php基础环境。mysql、redis基于官方Docker hub,分别构建我们自己的镜像。  code目录存放工程代码,会映

    2024年02月15日
    浏览(51)
  • macOS搭建PHP开发环境(brew安装nginx、mysql 和多版本php,并配置多个php同时运行的环境)

    由于homebrew主库中没有PHP7.2 之前的版本,并且7.2,7.3版本也被标记成过时版本;所以需要先挂在第三方的扩展,具体操作如下: php5.6 php7.3 php7.4 php8.2 默认新版8以上直接安装 sudo vim /usr/local/etc/php/5.6/php-fpm.conf  下的: 注意:5.6版本的配置文件路径和其他版本不一样 listen = 127

    2024年02月04日
    浏览(60)
  • docker搭建php

    PHP(PHP: Hypertext Preprocessor)即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法学习了C语言,吸纳Java和Perl多个语言的特色发展出自己的特色语法,并根据它们的长项持续改进提升自己,例如java的面向对象编程,该语言当初创建

    2024年02月05日
    浏览(34)
  • windows 搭建 PHP以及扩展swoole的运行环境(Cygwin模拟Linux环境)

    cygwin下载地址:https://www.cygwin.com/ 在浏览器中打开cygwin官网,下滑到Installing Cygwin部分,点击setup-x86_64.exe下载exe文件即可 安装cygwin 找到刚才下载的setup-x86_64.exe文件,双击打开,就开始安装cygwin 第一步:打开安装界面,直接点击下一步 第二步:选择下载源,我们直接默认选

    2024年02月07日
    浏览(45)
  • Docker容器运行多个php,一个正常另一个报502

    问题是解决了,但是并不知道问题出在哪儿 docker-compse.yml 文件并没有什么改动 在解决这个问题的过程中多次重新打包镜像配置运行容器,没有任何效果,最多就是原本正常的站点也变得不可用 我在看nginx的配置时,发现可以在 location 里面将多个版本的php都配置上路径 我想是

    2024年01月20日
    浏览(53)
  • Docker部署nginx+php环境,简单可用!

    第一步: 安装Docker 访问下面地址,根据你的需要下载安装docker运行环境。 下载docker desktop https://www.docker.com/ 如果你是Windows、macOS(Intel/M1)、Linux桌面OS,都可以下载到对应版本进行安装,相对命令行方式,更加简单方便。 安装完成后,运行docker desktop,显示如下界面: 在任

    2024年02月07日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包