У меня есть проект на основе laravel, который я должен разместить в цифровом океане с помощью докера. докер отлично работает на локальном хосте, но показывает 404 на сервере, но phpmyadmin также отлично работает на сервере, который работает на 8080
порт.
Вот мой докер-compose.yml
версия: '3'
сети:
Ларавель:
Сервисы:
нгинкс:
изображение: nginx: стабильный-альпийский
имя_контейнера: nginx
порты:
- "8088:80"
тома:
- ./src:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
зависит от:
- пхп
- mysql
сети:
- ларавель
MySQL:
изображение: MySQL: 5.7.22
перезапуск: если не остановлен
телетайп: правда
порты:
- "4306:3306"
тома:
- ./mysql:/var/lib/mysql
среда:
MYSQL_ROOT_PASSWORD: «корень»
MYSQL_DATABASE: «ларавел_тест»
MYSQL_USER: «корень»
MYSQL_PASSWORD: «корень»
SERVICE_TAGS: "разработчик"
ИМЯ_СЛУЖБЫ: "mysql"
сети:
- ларавель
php:
строить:
контекст: .
докерфайл: Докерфайл
имя_контейнера: php
тома:
- ./src:/var/www/html
порты:
- "9000:9000"
перезапуск: если не остановлен
сети:
- ларавель
phpmyadmin:
изображение: phpmyadmin
перезапуск: всегда
порты:
- 8080:80
среда:
- PMA_ARBITRARY=1
ссылки:
- mysql
сети:
- ларавель
нпм:
изображение: узел: 18-alpine3.14
имя_контейнера: нпм
тома:
- ./src:/var/www/html
рабочий_каталог: /var/www/html
точка входа: ['npm', '--no-bin-links']
сети:
- ларавель
композитор:
изображение: композитор: последний
имя_контейнера: композитор
тома:
- ./src:/var/www/html
рабочий_каталог: /var/www/html
зависит от:
- пхп
сети:
- ларавель
Докерфайл
ИЗ php:8.1.0-fpm
ЗАПУСК docker-php-ext-install pdo pdo_mysql
default.conf
сервер{
слушать 80;
индекс index.php index.html;
имя_сервера локальный хост;
журнал_ошибок /var/log/nginx/error.log;
журнал_доступа /var/log/nginx/access.log;
корень /var/www/html/public;
место расположения / {
try_files $uri $uri/ /index.php?$query_string;
}
расположение ~ \.php$ {
try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass PHP: 9000;
fastcgi_index index.php;
включить fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
мой файл php находится в ./src/public/