### [Docker Compose、Nginx和MariaDB的开箱即用解决方案:快速搭建PHP环境](https://www.prosaas.cn/article/12285) **Published:** 2023-10-12T04:46:05 **Author:** 5201314 **Excerpt:** Docker Compose、Nginx和MariaDB的开箱即用解决方案:快速搭建PHP环境概述:在开发和部… ![20231212154010242](https://zhiqipro.oss-cn-beijing.aliyuncs.com/2023/10/20231212154010242.jpg "20231212154010242") Docker Compose、Nginx和MariaDB的开箱即用解决方案:快速搭建PHP环境 概述: 在开发和部署PHP应用程序时,搭建一个可靠且易于管理的环境是至关重要的。Docker Compose、Nginx和MariaDB可以提供一个快速搭建PHP环境的解决方案。本文将介绍如何使用Docker Compose来配置和运行容器,使用Nginx作为Web服务器,使用MariaDB作为数据库,快速搭建PHP环境。 一、安装Docker和Docker Compose: 首先,我们需要在本地机器上安装Docker和Docker Compose。可以在Docker官方网站上找到适用于不同操作系统的安装指南。安装完成后,验证安装是否成功,可以在终端或命令提示符中输入以下命令: docker --version docker-compose --version 如果能够正确显示版本号,则表示Docker和Docker Compose已成功安装。 二、创建Docker Compose文件: 接下来,我们需要创建一个名为docker-compose.yml的文件,并在其中定义我们的服务和容器配置。 version: '3' services: nginx: build: context: . dockerfile: nginx.dockerfile ports: - 80:80 depends\_on: - php php: build: context: . dockerfile: php.dockerfile volumes: - ./src:/var/www/html mariadb: image: mariadb environment: - MYSQL\_ROOT\_PASSWORD=secret 解释: - nginx服务:使用build指令构建一个基于Nginx的容器,将本地机器的80端口映射到容器的80端口,依赖于php服务。 - php服务:使用build指令构建一个包含必要PHP扩展的容器,将本地机器的./src目录挂载到容器的/var/www/html目录,实现代码的同步更新。 - mariadb服务:使用默认的MariaDB Docker镜像,设置ROOT密码为secret。 三、创建Dockerfile和配置文件: 接下来,我们需要创建Dockerfile和配置文件,以便在构建镜像时提供必要的配置和依赖。 1. nginx.dockerfile: FROM nginx COPY nginx.conf /etc/nginx/nginx.conf COPY default.conf /etc/nginx/conf.d/default.conf 解释:从官方的Nginx镜像构建一个新的镜像,然后将本地的nginx.conf和default.conf文件复制到容器的相应位置。 2. php.dockerfile: FROM php:7.4-fpm RUN apt-get update && apt-get install -y zlib1g-dev libzip-dev && docker-php-ext-install zip pdo\_mysql COPY php.ini /usr/local/etc/php/conf.d/custom.ini 解释:从官方的PHP镜像构建一个新的镜像,然后使用apt-get命令安装必要的依赖,并通过docker-php-ext-install命令安装zip和pdo\_mysql扩展。最后将本地的php.ini文件复制到容器中。 3. nginx.conf: user nginx; worker\_processes auto; error\_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; events { worker\_connections 1024; } http { include /etc/nginx/mime.types; default\_type application/octet-stream; log\_format main '$remote\_addr - $remote\_user \[$time\_local\] "$request" ' '$status $body\_bytes\_sent "$http\_referer" ' '"$http\_user\_agent" "$http\_x\_forwarded\_for"'; access\_log /var/log/nginx/access.log main; sendfile on; keepalive\_timeout 65; server { listen 80; server\_name localhost; root /var/www/html; index index.php index.html; location / { try\_files $uri $uri/ /index.php?$query\_string; } location ~ .php$ { fastcgi\_pass php:9000; fastcgi\_index index.php; fastcgi\_param SCRIPT\_FILENAME $document\_root$fastcgi\_script\_name; include fastcgi\_params; } } } 解释:这是Nginx的配置文件。配置了默认的日志路径、事件设置、http设置和一个基本的server块,用于处理请求,并将PHP处理交给php容器。 4. default.conf: server { location / { try\_files $uri $uri/ /index.php?$query\_string; } location ~ .php$ { fastcgi\_pass php:9000; fastcgi\_index index.php; fastcgi\_param SCRIPT\_FILENAME $document\_root$fastcgi\_script\_name; include fastcgi\_params; } } 解释:这是Nginx的默认配置文件。与nginx.conf文件中的server块设置相同。 四、开始构建和运行容器: 在设置完所有配置文件之后,我们可以开始构建和运行容器了。在终端或命令提示符中,进入docker-compose.yml文件所在的目录,然后运行以下命令: docker-compose up --build 这条命令将启动构建镜像和运行容器的过程。一旦完成,你将会看到容器正在运行,并且可以通过http://localhost访问PHP应用程序。 如果需要在后台运行容器,可以使用以下命令: docker-compose up -d --build 这条命令将以守护进程模式运行容器。 总结: 通过Docker Compose、Nginx和MariaDB的开箱即用解决方案,我们可以快速搭建和管理PHP环境。Docker的可移植性和容器化的优势,使得开发和部署PHP应用程序变得更加简单和可靠。希望本文对你有所帮助,有关代码示例的更多细节,请参阅本文所提到的配置文件。 以上就是Docker Compose、Nginx和MariaDB的开箱即用解决方案:快速搭建PHP环境的详细内容,更多请关注知企PROSAAS其它相关文章! **Tags:** default, docker, html, http, mariadb, nginx, php, var, 事件, 数据库 **Categories:** 后端开发 ---