Чтобы адаптировать конфигурационные файлы вашего проекта под Docker и устранить проблему с конфликтующими `server_name`, можно учесть несколько моментов. Давайте разберем это шаг за шагом.
1. **Проблема с конфликтующими именами серверов**:
Сообщение `conflicting server name "lk.project.local" on 0.0.0.0:80, ignored` возникает, когда несколько виртуальных хостов в конфигурации Nginx содержат одно и то же имя сервера. В вашем `docker-compose.yml` вы указали два файла конфигурации для одного и того же виртуального хоста `lk.project.local`:
```yaml
- ./docker/nginx/api.project.local:/etc/nginx/conf.d/api.project.local.conf
- ./docker/nginx/b.project.local:/etc/nginx/conf.d/b.project.local.conf
- ./docker/nginx/lk.project.local:/etc/nginx/conf.d/b.project.local.conf # Здесь ошибка
```
Вам следует исправить это на:
```yaml
- ./docker/nginx/lk.project.local.conf:/etc/nginx/conf.d/lk.project.local.conf
```
2. **Путь к файлам в томах**:
Убедитесь, что вы правильно монтируете директории и указываете нужные пути к вашим файлам. В вашем случае `- ./:/var/wwww/project` должен быть изменен на:
```yaml
- ./:/var/www/project
```
Проверьте, чтобы путь к директории был корректным. Существует несколько опечаток, например, `wwww` вместо `www`.
3. **Настройка конфигурационных файлов Nginx**:
Вам нужно убедиться, что конфигурационные файлы Nginx правильно настроены для работы в Docker. Примеры конфигурации виртуальных хостов для Nginx должны содержать соответствующие блоки:
```nginx
server {
listen 80;
server_name api.project.local;
root /var/www/project/frontend/web;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass php:9000; # Убедитесь, что php отправляется на правильный порт
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
```
4. **Обновление docker-compose.yml**:
Убедитесь, что все ваши сервисы правильно настроены и зависимости обрабатываются. Вот измененный фрагмент `docker-compose.yml`:
```yaml
version: '3.2'
networks:
project:
services:
nginx:
container_name: project_nginx
image: nginx:1.18.0
ports:
- 80:80
volumes:
- ./:/var/www/project
- ./docker/nginx/api.project.local.conf:/etc/nginx/conf.d/api.project.local.conf
- ./docker/nginx/b.project.local.conf:/etc/nginx/conf.d/b.project.local.conf
- ./docker/nginx/lk.project.local.conf:/etc/nginx/conf.d/lk.project.local.conf
networks:
- project
depends_on:
- php
php:
container_name: project_php
build: /docker/php8.1-fpm
volumes:
- ./:/var/www/project
- ./docker/php.ini:/usr/local/etc/php/conf.d/php.ini
networks:
- project
depends_on:
- db
db:
container_name: project_db
...
```
Теперь у вас не должно возникать сообщений о конфликте имен серверов, и все ваши конфигурации должны быть правильно подключены к Nginx через Docker. После этих правок рекомендуется перезапустить Docker-контейнеры с помощью:
```bash
docker-compose down
docker-compose up --build
```
Это должно помочь в корректной загрузке конфигурации Nginx и запуске вашего проекта в Docker.