【发布时间】:2023-03-19 01:28:01
【问题描述】:
我在我的项目中使用了这个repository。这是 docker-compose 文件代码:
version: '3.6'
services:
nginx:
image: nginx:1.19-alpine
container_name: default-structure-nginx
restart: always
volumes:
- ./public:/var/www/public
- ./nginx.develop.conf:/etc/nginx/nginx.conf
ports:
- 80:80
depends_on:
- app
command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
app:
build:
context: .
args:
- COMPOSER_FLAGS=--prefer-dist --optimize-autoloader
command: /usr/local/sbin/php-fpm
container_name: default-structure-app
restart: always
ports:
- 9000:9000
environment:
- OPCACHE_SAVE_COMMENTS=1
- OPCACHE_VALIDATE_TIMESTAMPS=1
- OPCACHE_REVALIDATE_FREQ=0
volumes:
- .:/var/www
- ./php.ini:/usr/local/etc/php/php.ini
- ./www.conf:/usr/local/etc/php-fpm.d/www.conf
depends_on:
- pgsql
- redis
schedule:
image: ibrunotome/php:8.0
container_name: default-structure-schedule
restart: always
command:
- /bin/bash
- -c
- |
chmod +x schedule.sh
/var/www/schedule.sh
environment:
- OPCACHE_SAVE_COMMENTS=0
- OPCACHE_VALIDATE_TIMESTAMPS=0
- OPCACHE_REVALIDATE_FREQ=0
volumes:
- .:/var/www
- ./php.ini:/usr/local/etc/php/php.ini
depends_on:
- pgsql
- redis
queue:
image: ibrunotome/php:8.0
container_name: default-structure-queue
restart: always
command: php artisan horizon
environment:
- OPCACHE_SAVE_COMMENTS=0
- OPCACHE_VALIDATE_TIMESTAMPS=0
- OPCACHE_REVALIDATE_FREQ=0
volumes:
- .:/var/www
- ./php.ini:/usr/local/etc/php/php.ini
depends_on:
- pgsql
- redis
pgsql:
image: launcher.gcr.io/google/postgresql13
container_name: default-structure-pgsql
ports:
- 5432:5432
environment:
POSTGRES_DB: default
POSTGRES_USER: default
POSTGRES_PASSWORD: default
volumes:
- pg-data:/var/lib/postgresql/data
redis:
image: library/redis:6.0.10-alpine
container_name: default-structure-redis
restart: always
ports:
- 6379:6379
volumes:
- redis-data:/data
volumes:
pg-data:
redis-data:
源码 nginx.develop.conf:
worker_processes 1;
events {
worker_connections 4096;
multi_accept on;
use epoll;
}
http {
include mime.types;
server_tokens off;
default_type application/octet-stream;
client_body_buffer_size 10K;
client_header_buffer_size 1k;
client_max_body_size 10m;
large_client_header_buffers 4 16k;
access_log off;
error_log /dev/stderr;
sendfile on;
keepalive_timeout 15;
keepalive_requests 10000;
server {
listen 80;
index index.php index.html;
root /var/www/public;
add_header 'Access-Control-Allow-Origin:' '*' 'always';
add_header 'Access-Control-Allow-Credentials:' 'true' 'always';
add_header 'Access-Control-Allow-Methods:' 'GET, HEAD, POST, PUT, PATCH' 'always';
add_header 'Access-Control-Allow-Headers:' 'Authorization, Cache-Control, Content-Type, Keep-Alive, Origin, X-Requested-With' 'always';
add_header 'Referrer-Policy' 'same-origin';
add_header 'Feature-Policy' "geolocation 'none'; vibrate 'none'";
add_header 'Strict-Transport-Security' 'max-age=31536000; includeSubdomains; preload';
add_header 'X-Content-Type-Options' 'nosniff';
add_header 'X-Frame-Options' 'SAMEORIGIN';
add_header 'X-XSS-Protection' '1; mode=block';
gzip on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript text/x-js;
location ~* \.(js|jpg|jpeg|gif|png|css|tgz|gz|rar|bz2|doc|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|woff|woff2|svg)$ {
expires 365d;
access_log off;
etag on;
if_modified_since exact;
add_header Pragma "public";
add_header Cache-Control "max-age=31536000, public";
add_header Access-Control-Allow-Origin *;
}
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_read_timeout 180;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 503 @503_json;
error_page 502 @502_json;
error_page 500 @500_json;
error_page 404 @404_json;
location @503_json {
return 503 '{"data": {"message": "The server is temporary unable to serve your request"}, "meta": {"timestamp": $msec}}';
}
location @502_json {
return 502 '{"data": {"message": "The server encountered a temporary error and could not complete your request"}, "meta": {"timestamp": $msec}}';
}
location @500_json {
return 500 '{"data": {"message": "There was an error. Please try again later"}, "meta": {"timestamp": $msec}}';
}
location @404_json {
return 404 '{"data": {"message": "The requested resource was not found"}, "meta": {"timestamp": $msec}}';
}
}
}
源码应用服务Dockerfile:
FROM ibrunotome/php:8.0-fpm
ARG COMPOSER_FLAGS
WORKDIR /var/www
COPY . /var/www
RUN composer install $COMPOSER_FLAGS \
&& mv php.ini /usr/local/etc/php/php.ini \
&& mv www.conf /usr/local/etc/php-fpm.d/www.conf \
&& chown -R 0:www-data /var/www \
&& find /var/www -type f -exec chmod 664 {} \; \
&& find /var/www -type d -exec chmod 775 {} \; \
&& chgrp -R www-data storage bootstrap/cache \
&& chmod -R ug+rwx storage bootstrap/cache
CMD ["/usr/local/sbin/php-fpm"]
EXPOSE 9000
当我运行 docker-compose 文件时,从 nginx 服务获取路径错误消息:
"PHP 消息:PHP 警告: 要求(/var/www/public/../vendor/autoload.php):打开失败 流:在线/var/www/public/index.php中没有这样的文件或目录 28PHP 消息:PHP 致命错误:未捕获错误:打开失败 需要'/var/www/public/../vendor/autoload.php' (include_path='.:/usr/local/lib/php') 在/var/www/public/index.php:28
如何更正vendor/autoload.php 文件的路径以修复错误?
【问题讨论】:
标签: php laravel docker docker-compose laravel-8