构建一个基于Docker的nginx和php-fpm环境主要包括以下几个步骤:首先创建一个Dockerfile并配置相关内容;接着通过运行Docker容器来构建和启动服务;最后测试配置的正确性并进行容器化部署。具体步骤如下:
- 安装Docker:请确保本地已经安装了Docker。若尚未安装,请访问Docker官网下载和安装适用于你系统的Docker版本。
- 创建Dockerfile:在项目根目录,创建一个名为
Dockerfile
的文件,并打开该文件填写以下配置:
FROM nginx:stable-alpine
RUN apk update && apk add php-fpm \
&& mkdir /run/nginx
COPY nginx.conf /etc/nginx/nginx.conf
COPY php-fpm.conf /etc/php7/php-fpm.conf
CMD php-fpm7 && nginx
EXPOSE 80
这个Dockerfile基于轻量级的Alpine Linux和nginx镜像来创建一个新的镜像。它将安装并配置php-fpm,然后将自定义的nginx和php-fpm配置文件复制到容器中。最后,它将启动php-fpm和nginx,并暴露80端口以供外部访问。
- 添加配置文件:接下来,我们需要创建两个配置文件,一个用于nginx,另一个用于php-fpm。这将分别命名为
nginx.conf
和php-fpm.conf
。
nginx.conf
:
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server_tokens off;
upstream php {
server unix:/var/run/php/php7.0-fpm.sock;
}
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
}
php-fpm.conf
:
[global]
pid = /var/run/php-fpm.pid
error_log = /var/log/php7/error.log
[www]
listen = /var/run/php/php7.0-fpm.sock
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
user = nginx
group = nginx
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500
- 构建镜像:在完成了Dockerfile和配置文件之后,运行以下命令以在本地构建Docker镜像:
docker build -t docker-nginx-php-fpm .
- 启动容器:成功构建镜像后,运行以下命令以启动一个新的容器:
docker run -itd -p 8080:80 --name nginx-php-fpm-test docker-nginx-php-fpm
- 测试配置:在本地创建一个
index.php
文件,其中包含以下内容:
<?php phpinfo(); ?>
将这个文件复制到容器的 /usr/share/nginx/html
目录下:
docker cp index.php nginx-php-fpm-test:/usr/share/nginx/html/
- 测试运行情况:使用浏览器访问
http://localhost:8080/index.php
。如果一切配置正确,你应该能看到PHP信息页面。此时,你已经成功地构建了一个基于Docker的nginx和php-fpm环境。
从这里开始,你可以根据自己的项目需求对配置文件进行修改,并将项目部署到Docker容器中。记住要实现一个完整的、生产级的应用环境,你可能还需要添加数据库支持、安全设置和其他功能模块。
云服务器推荐
蓝易云国内/海外高防云服务器推荐
海外免备案云服务器链接:www.tsyvps.com
蓝易云香港五网CN2 GIA/GT精品网络服务器。拒绝绕路,拒绝不稳定。