2017-05-12 4 views
0

Ich baue einen Debian 9, NGINX, PHP7 FPM-Container.

Ich habe dies in meinem php7-fpm Docker-Datei (die auf Debian 9 basiert)

Das Problem tritt auf (glaube ich), wenn ich diese Schlußzeile haben: ENTRYPOINT ["php7.0-fpm"]

ich verwendet habe dies vor in previous Docker Build aber dies verursacht Probleme mit dem folgenden Fehler: $ docker run -t linxlad/php7-fpm C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"php7.0-fpm\": executable file not found in $PATH".

Meine Docker-Datei:

# 
# PHP-FPM Dockerfile 
# 

# Pull base image. 
FROM linxlad/nginx 

# No tty 
ENV DEBIAN_FRONTEND noninteractive 

RUN echo "deb http://ftp.us.debian.org/debian/ stretch main contrib non-free" >> /etc/apt/sources.list 
RUN echo "deb-src http://ftp.us.debian.org/debian/ stretch main contrib non-free" >> /etc/apt/sources.list 

RUN wget https://www.dotdeb.org/dotdeb.gpg && apt-key add dotdeb.gpg 

RUN apt-get update && \ 
    apt-get -y install software-properties-common && \ 
    apt-get update 

# Install PHP 
RUN apt-get -y --force-yes install php7.0-cli php7.0-fpm php7.0-dev php7.0-mcrypt php7.0-mbstring \ 
    php7.0-bz2 php7.0-xml php7.0-common php7.0-mysql php-pear 

# Phalcon 
RUN curl -s "https://packagecloud.io/install/repositories/phalcon/stable/script.deb.sh" | bash && \ 
    apt-get update && \ 
    apt-get -y --force-yes install php7.0-phalcon 

RUN echo "extension=phalcon.so" >> /etc/php/7.0/fpm/conf.d/40-phalcon.ini 

RUN sed -i '/daemonize /c \ 
daemonize = no' /etc/php/7.0/fpm/php-fpm.conf 

# tweak php-fpm config 
RUN sed -i -e "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" /etc/php/7.0/fpm/php.ini && \ 
    sed -i -e "s/upload_max_filesize\s*=\s*2M/upload_max_filesize = 100M/g" /etc/php/7.0/fpm/php.ini && \ 
    sed -i -e "s/memory_limit = .*/memory_limit = 1024M/g" /etc/php/7.0/fpm/php.ini && \ 
    sed -i -e "s/memory_limit = .*/memory_limit = 1024M/g" /etc/php/7.0/cli/php.ini && \ 
    sed -i -e "s/post_max_size\s*=\s*8M/post_max_size = 100M/g" /etc/php/7.0/fpm/php.ini && \ 
    sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php/7.0/fpm/php-fpm.conf && \ 
    sed -i -e "s/;catch_workers_output\s*=\s*yes/catch_workers_output = yes/g" /etc/php/7.0/fpm/pool.d/www.conf && \ 
    sed -i -e "s/pm.max_children = 5/pm.max_children = 9/g" /etc/php/7.0/fpm/pool.d/www.conf && \ 
    sed -i -e "s/pm.start_servers = 2/pm.start_servers = 3/g" /etc/php/7.0/fpm/pool.d/www.conf && \ 
    sed -i -e "s/pm.min_spare_servers = 1/pm.min_spare_servers = 2/g" /etc/php/7.0/fpm/pool.d/www.conf && \ 
    sed -i -e "s/pm.max_spare_servers = 3/pm.max_spare_servers = 4/g" /etc/php/7.0/fpm/pool.d/www.conf && \ 
    sed -i -e "s/pm.max_requests = 500/pm.max_requests = 200/g" /etc/php/7.0/fpm/pool.d/www.conf && \ 
    sed -i -e "s/user = www-data/user = web/g" /etc/php/7.0/fpm/pool.d/www.conf && \ 
    sed -i -e "s/group = www-data/group = staff/g" /etc/php/7.0/fpm/pool.d/www.conf && \ 
    echo "date.timezone = \"Europe/London\"" >> /etc/php/7.0/fpm/php.ini 

# fix ownership of sock file for php-fpm 
RUN sed -i -e "s/;listen.mode = 0660/listen.mode = 0750/g" /etc/php/7.0/fpm/pool.d/www.conf && \ 
    find /etc/php/7.0/cli/conf.d/ -name "*.ini" -exec sed -i -re 's/^(\s*)#(.*)/\1;\2/g' {} \; 

RUN sed -i '/^listen /c \ 
    listen = 9000' /etc/php/7.0/fpm/pool.d/www.conf 

RUN sed -i 's/^listen.allowed_clients/;listen.allowed_clients/' /etc/php/7.0/fpm/pool.d/www.conf 

EXPOSE 9000 

VOLUME ["/etc/php-fpm.d", "/var/log/php-fpm", "/var/www/html"] 

ENTRYPOINT ["php7.0-fpm"] 

Ich habe etwas ähnliches gefunden, aber es funktioniert nicht für mich? Executable file not found in $PATH

Wer weiß eine Lösung?

Antwort

1

Haben Sie versucht, den absoluten Pfad der fpm-Datei im ENTRYPOINT anzugeben?

So etwas wie ENTRYPOINT [ "/etc/init.d/php7.0-fpm"]

+0

Ich habe gerade versucht, 'CMD Service php7.0-fpm Start && nginx -g "Dämon aus;"' und habe den folgenden Fehler 'nginx: ungültige Option: "/ bin/sh" '. Lass mich deinen Vorschlag ausprobieren. – Kal

+0

Ich vermute es ist das? 'ENTRYPOINT [" /etc/init.d/php7.0-fpm "," start "]' aber was hält den Container am Laufen? Wie kann ich weitermachen, es laufen keine Fehler mehr sondern der Container läuft nicht nachdem ich ihn hochgefahren habe. Ich brauche etwas zum Einhängen, um weiterzumachen? – Kal

+1

Wenn der Container nicht ausgeführt wird, ist die Initialisierung fehlgeschlagen. Sie sollten das überprüfen können von - docker logs

Verwandte Themen