Docker Nginx 运行 php 项目
时间: 2024-05-16 09:19:36 浏览: 155
要在 Docker 中运行 PHP 项目,需要进行以下步骤:
1. 创建 Dockerfile
在项目根目录中创建一个名为 Dockerfile 的文件,其中包含以下内容:
```
FROM php:7.4-fpm-alpine
RUN apk --update add --no-cache nginx supervisor
COPY ./config/nginx.conf /etc/nginx/nginx.conf
COPY ./config/site.conf /etc/nginx/conf.d/default.conf
COPY ./config/supervisord.conf /etc/supervisord.conf
COPY ./src /var/www/html
EXPOSE 80
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
```
这个 Dockerfile 中,使用了基于 Alpine 的 PHP-FPM 镜像,并安装了 Nginx 和 Supervisor。然后将项目的 Nginx 配置文件、Supervisor 配置文件和 PHP 代码都复制到 Docker 容器中,并暴露了 80 端口。最后启动了 supervisord 进程。
2. 创建 Nginx 配置文件
在项目根目录中创建一个名为 config 的文件夹,并在其中创建一个名为 nginx.conf 的文件,用于配置 Nginx 的全局设置,例如 worker_processes、worker_connections 等。
然后在 config 文件夹中创建一个名为 site.conf 的文件,用于配置 Nginx 的虚拟主机。以下是一个简单的示例:
```
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 /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
}
```
其中,`root` 指定了 PHP 项目的根目录,`location` 块用于处理 PHP 请求。`fastcgi_pass` 指令指向了 PHP-FPM 的地址。
3. 创建 Supervisor 配置文件
在 config 文件夹中创建一个名为 supervisord.conf 的文件,用于配置 Supervisor 的进程。以下是一个简单的示例:
```
[supervisord]
nodaemon=true
[program:nginx]
command=/usr/sbin/nginx -g "daemon off;"
[program:php-fpm]
command=/usr/local/sbin/php-fpm --nodaemonize --fpm-config /usr/local/etc/php-fpm.conf
```
其中,[program:nginx] 和 [program:php-fpm] 分别用于启动 Nginx 和 PHP-FPM 进程。
4. 构建 Docker 镜像
在项目根目录中,运行以下命令构建 Docker 镜像:
```
docker build -t my-php-app .
```
这个命令将会构建一个名为 my-php-app 的 Docker 镜像,其中包含了 PHP 项目、Nginx 和 Supervisor。
5. 启动 Docker 容器
运行以下命令启动 Docker 容器:
```
docker run -p 80:80 my-php-app
```
这个命令将会启动一个名为 my-php-app 的容器,并将容器的 80 端口映射到主机的 80 端口上。现在可以在浏览器中访问 http://localhost 查看 PHP 项目了。
以上就是在 Docker 中运行 PHP 项目的基本步骤,可以根据实际情况进行调整。
阅读全文