Forum Linux.général Docker : usr/sbin/nginx: /usr/sbin/nginx: cannot execute binary file

Posté par  . Licence CC By‑SA.
Étiquettes :
0
28
juin
2019

Hello,

Je viens de faire un dockerfile pour packager nginx avec symfony mais lorsque je tente d'éxécuter un container à partir de l'image buildée il me sort le message suivant:
usr/sbin/nginx: /usr/sbin/nginx: cannot execute binary file

Pouvez vous m'aider à résoudre ce problème svp ?

Voici le contenu de mon Dockerfile:

FROM nginx:latest


ARG DEBIAN_FRONTEND=noninteractive
ENV php_conf /etc/php/7.0/fpm/php.ini
ENV nginx_conf /etc/nginx/nginx.conf

RUN apt-get update \
        && apt-get install  apt-transport-https lsb-release -y \
        && apt-get install  wget curl -y \
        && wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg \
        && echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list \
        && apt-get update \
        && apt-get  install  dialog apt-utils -y \
        && apt-get --no-install-recommends install -y \
        && apt-get  install php7.3 php7.3-common php7.3-cli -y \
        && apt-get  install php7.3-bcmath php7.3-bz2 php7.3-curl php7.3-gd php7.3-intl php7.3-json php7.3-mbstring php7.3-readline php7.3-xml php7.3-zip -y \
        && apt-get  install php7.3-fpm -y \
        && apt-get  install php-mysql -y \
        && mkdir -p /var/www/html/symfony-dev001 \
        && mkdir -p /etc/nginx/logs \
        && chown -R nginx:nginx  /var/www/html/symfony-dev001 \
        && chown -R nginx:nginx /etc/nginx \
        && chmod u+x /usr/sbin/nginx \
        && apt-get  install unzip -y \
        && curl --silent --show-error -o composer-setup.php https://getcomposer.org/installer \
        && EXPECTED_SIGNATURE=$(curl --silent --show-error https://composer.github.io/installer.sig) \
        && ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');") \
        && if [ "${EXPECTED_SIGNATURE}" != "${ACTUAL_SIGNATURE}" ]; then \
            >&2 echo 'ERROR: Invalid composer installer signature' \
            && rm composer-setup.php \
            && exit 1 \
       ; fi \
        && php composer-setup.php --install-dir=/var/www/html/symfony-dev001 \
        && rm composer-setup.php \
        && cd /var/www/html/symfony-dev001 \
        && mv ./composer.phar ./composer \
        && ./composer require symfony/requirements-checker -n \
        && ./composer remove symfony/requirements-checker -n \
        && ./composer create-project symfony/website-skeleton my-project -n \
        && ./composer require symfony/apache-pack -n



COPY nginx.conf /etc/nginx/nginx.conf

ENTRYPOINT ["/bin/bash"]

CMD ["nginx", "-g", "daemon off;"]

Merci de votre aide

  • # ENTRYPOINT et CMD

    Posté par  . Évalué à 2.

    Je dirais que le problème se situe à la ligne ENTRYPOINT et CMD.
    Là, je pense, que tu demandes au binaire bash d’exécuter un script shell nommé nginx.

    Donc, selon ton choix et ton utilisation de cette image, tu peux :

    • retirer la ligne ENTRYPOINT
    • ou redéfinir l'ENTRYPOINT sur nginx et laisser les arguments d'nginx dans le CMD:
    ENTRYPOINT ["nginx"]
    
    CMD ["-g", "daemon off;"]
    
    • [^] # Re: ENTRYPOINT et CMD

      Posté par  . Évalué à 2.

      La deuxième solution est la pire de toute.

      Je conseille soit de ne pas mettre d’ENTRYPOINT soit d’installer dumb-init et de l’utiliser comme ENTRYPOINT : ENTRYPOINT ["dumb-init", "--"].

      Pour le reste, pourquoi ne pas utiliser les images PHP existantes ?

  • # Merci à vous deux

    Posté par  . Évalué à 1.

    Hello,

    Merci à vous deux pour vos réponses.

    Je ne sais pas ce qu'est dumb-init mais je vais regarder. Et je vais aussi tester depuis une image PHP d'y installe nginx et symfony.

    Mais d'abord je vais tester d'enlever l'entrypoint.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.