Nginx+php+mysql в docker

Здравствуйте! Прохожу урок docker nginx+php+mysql, при создании контейнера nginx командой docker run -itd --name nginx --link php -v $site_path:/var/www -p 80:80 $nginx_image и контейнера php командой docker run --rm -itd --name php -v $site_path:/var/www $php_image у меня php не запускается, 2 дня уже вожусь. Dockerfile -
FROM nginx
RUN mkdir /var/www
COPY ./test.conf /etc/nginx/conf.d/

Добрый день,
Вы показали Dockerfile для nginx, но как выглядит Dockerfile для PHP? Возможно, проблема связана с его конфигурацией.

Давайте рассмотрим ваши Docker команды и Dockerfile и попробуем выявить проблемы.

  1. Docker команды:
  • Для nginx: docker run -itd --name nginx --link php -v $site_path:/var/www -p 80:80 $nginx_image
  • Для php: docker run --rm -itd --name php -v $site_path:/var/www $php_image
  1. Dockerfile:
FROM nginx RUN mkdir /var/www COPY ./test.conf /etc/nginx/conf.d/

Этот Dockerfile создает образ для nginx, создает директорию /var/www и копирует файл конфигурации nginx.
3. **Проблемы с запуском контейнера php:**a. Убедитесь, что образ $php_image правильно настроен для работы с PHP.b. Проверьте наличие ошибок в логах контейнера php. Вы можете сделать это с помощью команды:

docker logs php

c. Убедитесь, что PHP контейнер может подключиться к необходимым ресурсам и правильно настроен для работы с вашим проектом.
4. **Возможные исправления:**a. Убедитесь, что PHP образ настроен для работы с вашим приложением. Возможно, потребуется создать Dockerfile для php контейнера. Пример Dockerfile для PHP:

FROM php:7.4-fpm WORKDIR /var/www COPY . /var/www

b. Попробуйте запустить контейнер php с интерактивной консолью для диагностики:

docker run --rm -it --name php -v $site_path:/var/www $php_image bash

После этого внутри контейнера выполните команды для запуска PHP и проверьте, какие ошибки возникают.c. Проверьте связь между контейнерами. Для этого можно использовать Docker Network вместо --link. Создайте сеть и подключите оба контейнера к ней:

docker network create my_network docker run -itd --name php --network my_network -v $site_path:/var/www $php_image docker run -itd --name nginx --network my_network -v $site_path:/var/www -p 80:80 $nginx_image
  1. **Тестирование nginx конфигурации:**Убедитесь, что файл test.conf настроен правильно для работы с PHP. Пример конфигурации nginx для PHP:
server { listen 80; server_name localhost; root /var/www; index index.php index.html index.htm; location / { try_files $uri $uri/ =404; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }