我现在一直试图解决这个问题,这已经打败了我。
以下是设置:
Nginx在一个docker容器中,php-fpm 7.1在另一个docker容器中。容器都可以访问相同的文件卷。
通信正在运行,它显示一个没有问题的phpinfo文件,简单快捷,根目录中的phpinfo文件,以及子目录。
将应用程序文件复制到服务器。 根目录中的文件快速返回,没有延迟。 在发生任何事情之前,对子目录中文件的任何访问都有40-50秒的延迟,但是在最终加载时会正确处理。
我可以看到创建php-fpm进程来处理请求,但它似乎没有做到40-50秒左右的任何事情。
有问题的应用程序是Prestahop(尚未安装,因此它正在尝试运行安装过程),因此它不是应用程序问题。
只有当请求的文件位于子目录中时,导致40秒延迟到第一次repsonse的原因是什么?
感激不尽的任何帮助。
配置文件:
Docker撰写
version: '2'
services:
nginx_test:
image: roja45/nginx
working_dir: /var/www
container_name: nginx_test
environment:
- WORKING_DIR=/var/www
volumes:
- /home/user/websites/test:/var/www
- /home/user/docker/nginx/test.conf:/etc/nginx/conf.d/default.conf:ro
ports:
- "80:80"
networks:
- nginx-proxy
php_test:
image: roja45/php-fpm:7.1
container_name: php_test
volumes:
- /home/user/websites/test:/var/www
- /home/nigel/docker/php-fpm/php-roja45-dev.ini:/usr/local/etc/php/conf.d/php-roja45-dev.ini
ports:
- "9000:9000"
networks:
- nginx-proxy
networks:
nginx-proxy:
external:
name: nginx-proxy
volumes:
roja45-database:
driver: local
Nginx Doxkerfile
FROM nginx:alpine
RUN mkdir -p /var/www
RUN set -x \
&& addgroup -g 82 -S www-data \
&& adduser -u 82 -D -S -G www-data www-data
RUN chown -R www-data:www-data /var/www
RUN chmod u+rwx,g+rx,o+rx /var/www
RUN find /var/www -type d -exec chmod 755 {} +
RUN find /var/www -type f -exec chmod 644 {} +
PHP-FPM Dockerfile
FROM php:7.1-fpm-jessie
RUN apt-get update
RUN apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libmcrypt-dev \
libpng12-dev \
&& docker-php-ext-install -j$(nproc) iconv pdo pdo_mysql zip mysqli \
&& docker-php-ext-configure gd \
--with-freetype-dir=/usr/include/ \
--with-jpeg-dir=/usr/include/ \
&& docker-php-ext-install -j$(nproc) gd
RUN chown -R www-data:www-data /var/www
RUN chmod u+rwx,g+rx,o+rx /var/www
RUN find /var/www -type d -exec chmod 755 {} +
RUN find /var/www -type f -exec chmod 644 {} +
Nginx conf
server {
listen 80;
server_name server_name;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log debug;
index index.php index.html;
charset utf-8;
root /var/www;
error_page 404 /error404.html;
error_page 500 /error500.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ ^/.+\.php(/|$) {
fastcgi_split_path_info ^(.+.php)(/.*)$;
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_keep_conn on;
fastcgi_pass php_test:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
PHP ini补充:
file_uploads = On
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 30
request_terminate_timeout = 30
log_errors=on
error_log = /var/www/error_log
max_input_vars = 10000
short_open_tag=off
date.timezone = "America/Bogota"
答案 0 :(得分:1)
用于docker-compose文件中的nginx和php-fpm容器
func StudentCreateWithExcelPost(w http.ResponseWriter, r *http.Request) {
mr, err := r.MultipartReader()
log.Print(err)
form, err := mr.ReadForm(10 << 20)
if err != nil {
log.Print(err)
}
fh := form.File["file"]
excelFile, err := fh[0].Open()
if err != nil {
log.Print(err)
}
}