почему это работает:
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./:/var/www/html
- ./default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- api
links:
- api
api:
image: php:8.2-fpm
ports:
- "9000:9000"
volumes:
- ./:/var/www/html
Но это не так
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./:/usr/share/nginx/html
- ./default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- api
links:
- api
api:
image: php:8.2-fpm
ports:
- "9000:9000"
volumes:
- ./libs/php:/var/www/html
По сути, это отделяет внешний интерфейс от внутреннего, где контейнер nginx ничего не знает о php (из-за dockerignore для внешнего интерфейса nginx). Но после нескольких часов попыток единственный вариант — поместить все это в одну и ту же папку по объему, что противоречит цели контейнеризации.
Второй вариант не позволит интерфейсу отправлять запросы к серверная часть php. Все, что вы получите, это постоянные ошибки о том, что файл не существует, 404 или 502. Почему? Нет ли у контейнеров возможности отправлять запросы друг другу без необходимости явного использования одних и тех же папок и файлов?
├── docker-compose.yaml
├── index.html
└── libs/
├── php/
│ ├── geocodeBackend.php # PHP files served by php-fpm
│ └── other_php_files.php
├── js/
│ └── jquery.js # JS, Css and html served by nginx
└── css/
└── styles.css
Подробнее здесь: https://stackoverflow.com/questions/791 ... iles-match
Том Docker работает только в том случае, если все файлы совпадают ⇐ Php
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение