赞
踩
构建一个基于Docker的nginx和php-fpm环境主要包括以下几个步骤:首先创建一个Dockerfile并配置相关内容;接着通过运行Docker容器来构建和启动服务;最后测试配置的正确性并进行容器化部署。具体步骤如下:
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.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
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容器中。记住要实现一个完整的、生产级的应用环境,你可能还需要添加数据库支持、安全设置和其他功能模块。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。