#docker #nginx
Вопрос:
Я установил свое приложение через docker на nginx. (Проект Laravel), но он возвращает «файл не найден» при попытке изменить корень nginx на var/www/public из var/www.
Я делюсь своими кодами ниже:
мое приложение.conf:
server {
listen 80;
index index.php index.html;
root /var/www/public;
location / {
try_files $uri /index.php?$args;
}
location ~ .php$ {
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;
}
server_tokens off;
}
мой докер-compose.yml
version: '3.7'
services:
app:
build:
context: docker/php
dockerfile: Dockerfile
container_name: app
image: jjuanrivvera99/laravel:mysql-alpine
restart: always
depends_on:
- redis
volumes:
- ./:/var/www
- ./docker/php/local.ini:/usr/local/etc/php/conf.d/local.ini
networks:
- app-network
web:
image: nginx:alpine
restart: always
depends_on:
- app
ports:
- "80:80"
- "443:443"
volumes:
- ./:/var/www
- ./docker/nginx/:/etc/nginx/conf.d/
networks:
- app-network
queue:
restart: always
depends_on:
- redis
image: jjuanrivvera99/laravel:mysql-alpine
environment:
CONTAINER_ROLE: "queue"
volumes:
- "./:/var/www/"
networks:
- app-network
scheduler:
restart: always
depends_on:
- redis
image: jjuanrivvera99/laravel:mysql-alpine
environment:
CONTAINER_ROLE: "scheduler"
volumes:
- "./:/var/www/"
networks:
- app-network
node:
image: jjuanrivvera99/node:alpine
restart: always
build:
context: docker/node
dockerfile: Dockerfile
container_name: node
volumes:
- ./:/var/www
mysql:
image: mysql:5.7.22
restart: always
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: mdpocr
MYSQL_ROOT_PASSWORD: Bugbytes13**
volumes:
- mysql-data:/var/lib/mysql/
- ./docker/mysql/my.cnf:/etc/mysql/my.cnf
networks:
- app-network
redis:
image: redis
restart: always
ports:
- 6379:6379
volumes:
- redis-data:/data
networks:
- app-network
networks:
app-network:
driver: bridge
volumes:
mysql-data:
driver: local
redis-data:
driver: local
что в этом плохого?
Это хорошо работает, когда я меняю root на /var/www. Но он возвращает «файл не найден», когда я изменяю его на /var/www/public.
Комментарии:
1. Вы создали
/var/www/public
этот каталог или его создает ваш проект?2. мои файлы находятся в /var/www. и да, я создал /var/www/public