1.
Использование одного образа для разных сервисов: В вашем файле
docker-compose.yml все три сервиса (
app, webserver и db) используют один и тот же образ
cubinez85/docker_compose/web:latest. Это неправильно, так как каждый из этих сервисов должен иметь свой образ, настроенный для конкретной задачи.
2.
Конфигурация NGINX: Если ваш NGINX не настроен правильно, он не сможет перенаправлять запросы на PHP контейнер. Вам нужно удостовериться, что конфигурация NGINX правильно перенаправляет запросы на fastcgi_pass адрес вашего PHP контейнера.
3.
Настройка PHP-FPM: Убедитесь, что PHP-FPM в вашем app контейнере настроен для прослушивания соединений (обычно это делается с помощью
listen = 9000 в файле
www.conf).
Измените docker-compose.yml:
version: '3.7'
services:
app:
build: ${PWD}/fpm/
image: cubinez85/docker_compose/app:latest
container_name: app
volumes:
- ${PWD}/code:/data
networks:
- app-network
webserver:
build: ${PWD}/nginx/
image: cubinez85/docker_compose/nginx:latest
container_name: webserver
volumes:
- ${PWD}/code:/data
ports:
- "80:80"
- "443:443"
networks:
- app-network
db:
image: mysql:latest
container_name: db
ports:
- "3306:3306"
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
volumes:
- ${PWD}/dbdata:/var/lib/mysql
networks:
- app-network
networks:
app-network:
driver: bridge
Убедитесь что в
nginx.conf есть что-то вроде:
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass app:9000;
...
}
Здесь
app:9000 указывает на ваш PHP контейнер и порт 9000, который слушает PHP-FPM.