
Мне нужно создать Dockerfile, который по определению должен наследоваться от centos:7, установить nginx и php и заставить его отображать PHP-файл.
Мой Dockerfile:
FROM centos:7
EXPOSE 80/tcp
RUN yum -y update
RUN yum -y install epel-release
RUN yum -y install nginx php php-fpm
RUN echo '<?php phpinfo();' > /var/www/demo/index.php
Мои проблемы:
- Как заставить Docker понять, что nginy должен запуститься при создании и запуске контейнера?
- Как заставить nginx понимать необходимость использования PHP?
Для 1. все, что я знаю, это то, что это невозможно ссборка докера.
Для 2. Я хотел использовать обучающие материалы, но они все неверны, потому что:
- нет
/etc/nginx/sites-available
каталога - нет файла, вызываемого
snippets/fastcgi-php.conf
в каком-либо месте для включения в nginx.conf
Я никогда раньше не работал с nginx, поэтому понятия не имею, с чего начать. Ни один учебник, который я нашел, не работает, потому что все эти файлы и папки не существуют. Все, что я получаю, это страница с ошибкой 403.
решение1
Это подход, который я вам предлагаю в какой-то момент, вам придется установить и настроить nginx наDockerfileи запускать его в любое время при запуске докера, установите это наdocker-entrypoint.sh
Dockerfile:
#Install and config Nginx
RUN {\
apt-get install nginx -y\
rm /etc/nginx/sites-enabled/default\
}
ADD YOUR_CONFIG_FILE /etc/nginx/sites-enabled/
RUN service nginx start
RUN PATH="$PATH:docker-entrypoint.sh"
COPY docker-entrypoint.sh /
RUN chmod +x docker-entrypoint.sh
ENTRYPOINT ["./docker-entrypoint.sh"]
docker-entrypoint.sh:
#!/bin/bash
service nginx start
/bin/bash
Надеюсь, поможет!
решение2
Мне удалось сохранить контейнер живым, добавив следующее
CMD ["nginx", "-g", "daemon off;"]
Надеюсь, это поможет вам и другим коллегам.