Пытаюсь настроить докер с помощью nginx и php5. Вот мой Dockerfile
FROM nginx:1.9.9
RUN apt-get update
RUN apt-get -y install php5-fpm php5-mysql php-apc php5-imagick\
php5-imap php5-mcrypt php5-curl php5-cli php5-gd php5-pgsql\
php5-common php-pear curl php5-json
ADD index.html /usr/share/nginx/html/index.html
ADD index.php /usr/share/nginx/html/index.php
ADD default /etc/nginx/sites-available/default
RUN /etc/init.d/php5-fpm restart
Я могу построить это прекрасно с помощью следующей команды:
sudo docker build -t myuser/nginx-php5:0.1 .
И тогда я запускаю его следующим образом:
sudo docker run -d -P myuser/nginx-php5:0.1
Работает nginx deamon, я действительно вижу свой index.html, но index.php загружается, а не обслуживается. Это указывает на то, что PHP установлен неправильно …
Мой файл по умолчанию:
server {
listen 80;
root /var/www;
index index.php index.html;
server_name localhost;
access_log /var/log/nginx/localhost.com-access.log;
error_log /var/log/nginx/localhost.com-error.log error;
charset utf-8;
location / {
try_files $uri $uri/ /index.html /index.php?$query_string;
}
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { access_log off; log_not_found off; }
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
include fastcgi.conf;
fastcgi_param HTTPS off;
}
location ~ /\.ht {
deny all;
}
}
Есть идеи, что я делаю не так? Я думаю, проблема в том, что я не делаю правильные вещи, чтобы поддерживать php5-fpm в работе .. но как это исправить?
Я думаю, что php-fpm не запускается, поэтому nginx просто возвращает php-файл вместо передачи в php-fpm для обработки.
Вы должны создать файл «entrypoint.sh» для запуска nginx и php-fpm при запуске контейнера. Кроме того, вы должны правильно установить пользователя и группу для рабочих процессов php-fpm.
Других решений пока нет …