【发布时间】:2016-08-26 19:38:30
【问题描述】:
我正在尝试创建两个 docker 容器。一个包含 nginx,另一个包含 php-fpm。这是我的docker-compose.yml:
version: '2'
services:
nginx:
build: ./nginx
ports:
- "80:80"
- "443:443"
fpm:
build: ./php
volumes:
- ./php/code:/var/www/html/
NGINX
这是我的Dockerfile nginx 容器:
FROM nginx:latest RUN rm /etc/nginx/conf.d/default.conf COPY ./default.conf /etc/nginx/conf.d/
还有,这是我的default.conf:
server {
listen 80;
server_name localhost;
root /var/www/html;
error_log /var/log/nginx/localhost.error.log;
access_log /var/log/nginx/localhost.access.log;
location / {
# try to serve file directly, fallback to app.php
try_files $uri /app.php$is_args$args;
}
location ~ ^/.+\.php(/|$) {
fastcgi_pass fpm:9000;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS off;
}
}
这是我所有的 nginx 配置。
PHP
这是./php目录中的Dockerfile:
from php:fpm
COPY ./code/ /var/www/html/
在./code 目录中,我有一个名为app.php 的文件,其中包含phpinfo()。
问题
我运行docker-compose up,当我尝试打开192.168.99.100(运行docker引擎的docker机器的IP)时,我得到File not found。我也试过192.168.99.100/app.php,但还是一样。
我配置错了什么?我在 Internet 上的一个示例中看到 PHP 文件必须存在于 nginx 容器中,但这没有任何意义,因为据我所知,php-fpm 是必须有权访问这些文件的进程。
【问题讨论】: