Я начинающий с Docker, и я пытаюсь создать свой собственный образ: Ubuntu + Nginx + PHP.
Итак, у меня есть каталог под названием тестовое задание. Внутри каталога два других каталога, приложение а также сайты с поддержкой. Также есть Dockerfile с содержанием:
FROM ubuntu:trusty
RUN apt-get update && \
apt-get install -y nginx php5-fpm php5-mysql php-apc php5-imagick php5-imap php5-mcrypt php5-gd libssh2-php && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
ADD sites-enabled/ /etc/nginx/sites-enabled/
ADD app/ /app/
EXPOSE 80
CMD ["php5-fpm", "-c", "/etc/php5/fpm"]
CMD ["/usr/sbin/nginx"]
Я строю этот образ успешно. Затем я создаю контейнер с docker run -d image_name
, Я получаю удостоверение личности, а затем я бегу docker inspect -f "{{.NetworkSettings.IPAddress}}" ID
для того, чтобы получить IP-адрес контейнера.
Мне нужен этот IP-адрес, потому что я также запускаю HAProxy в другом контейнере, поэтому я могу настроить его так, чтобы он указывал на правильную локализацию.
Итак, HAProxy и контейнер с приложением PHP работают нормально. HAProxy указывает на правильное приложение. Файлы приложения PHP загружаются в нужное место внутри контейнера.
Но Nginx не выполняет PHP. Вместо этого, когда я пытаюсь получить доступ к приложению, я просто получаю загруженный файл с моим PHP-кодом index.php.
В чем может быть проблема? Пожалуйста помоги.
Моим первым предположением было, что я делаю что-то не так в Dockerfile, когда запускаю php5-fpm. Я пробовал несколько разных способов, но ни один из них, похоже, не работает.
Только один CMD.
Если вам нужны «услуги», посмотрите в supervisord или рунит.
Других решений пока нет …