使用docker,nginx,php-fpm

时间:2017-12-18 17:46:26

标签: php docker nginx containers

我正在使用码头工人的容器 我有一个来自PHP-FPM,另一个来自Nginx 但我遇到Nginx服务静态文件(css,js)的问题 返回状态代码:404 Not Found

Nginx配置

server {
  # Set the port to listen on and the server name
  listen 80;
  listen [::]:80;

  # Set the document root of the project
  root /var/www/html;

  # Set the directory index files
  index index.php;

 #Set server name
 server_name myproject;

  # Specify the default character set
  charset utf-8;

  # Specify the logging configuration
  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log;

  # Specify what happens when PHP files are requested
  location ~* \.php$ {
      #try_files $uri =404;
      #try_files /index.php = 404;
      fastcgi_split_path_info ^(.+\.php)(/.+)$;
      fastcgi_pass    myproject:9000;
      fastcgi_index   index.php;
      include         fastcgi_params;
      fastcgi_param   SCRIPT_FILENAME     $document_root$fastcgi_script_name;
      fastcgi_param   SCRIPT_NAME         $fastcgi_script_name;
      fastcgi_param   PATH_INFO           $fastcgi_path_info;
  }

  location / {
      index index.php;
      try_files $uri $uri/ /index.php;
      include /etc/nginx/mime.types;
  } 

  location ~* \.(jpg|jpeg|png|css|js|ico|xml)$ {
      access_log        off;
      log_not_found     off;
     expires           360d;
     add_header Cache-Control "public";
  }

  # Specify what happens what .ht files are requested
  location ~ /\.ht {
      deny all;
  }
}

PHP Dockerfile

FROM php:7-fpm
RUN docker-php-ext-install pdo_mysql 
COPY . /var/www/html/
EXPOSE 9000

Nginx Dockerfile

FROM nginx:1.12.2
COPY ./default.conf /etc/nginx/conf.d/default.conf
EXPOSE 80

1 个答案:

答案 0 :(得分:2)

我认为问题,导致服务nginx无法找到您的网络项目。如果您使用docker-compose,您可以使用volume,但如果没有,您可以将nginx Dockerfile中的文件夹项目添加到/var/www/html

nginx dockerfile

ROM nginx:1.12.2
COPY . /var/www/html/
COPY ./default.conf /etc/nginx/conf.d/default.conf
EXPOSE 80

for docker compose如下:

services:
  nginx:
    images: nginx:latest
    ...
    ...
    volumes:
           - ./:/var/www/html
  php:
    images: php
    ...
    ...
    volumes:
           - ./:/var/www/html