Image showing [RESOLU] Docker Laravel /usr/sbin/apache2ctl,: not found exited with code 127

[RESOLU] Docker Laravel /usr/sbin/apache2ctl,: not found exited with code 127

affiliate best offer

J’ai récemment terminé un projet Laravel et j’ai fait un pas de plus pour l’empaqueter dans Docker. Dans le processus, j’ai rencontré un comportement étrange. L’outil docker-compose a lancé cette erreur /usr/sbin/apache2ctl,: not found sorti avec le code 127 sur moi. J’ai finalement réussi à le résoudre. Voici comment.

Mon plan est de regrouper l’application Laravel dans une image Docker, puis de la réutiliser dans d’autres services. Je l’ai déjà fait et je suivais le même chemin.

Puis je suis tombé sur une erreur étrange.

Vérifions d’abord ma configuration, puis plongeons dans la solution.

Configuration de mon application

J’ai une application simple que je souhaite regrouper dans docker. Il est utilisé sur le système d’exploitation Ubuntu.

Il a un dossier docker/web où le Dockerfile est stocké.

Le code source est dans le répertoire courant.

Voici le Dockerfile :

version : '3'

services:
  web: 
    container_name: laravel_web
    build:
      context: ./docker/web
    ports:
      - 9000:80
    volumes:
      - ./:/var/www/app

J’utilise ensuite ce Dockerfile dans mon fichier de composition.

Voici mon fichier docker-compose.yml.

FROM php:7.2.10-apache-stretch

RUN apt-get update -yqq && \
    apt-get install -y apt-utils zip unzip && \
    apt-get install -y nano && \
    apt-get install -y libzip-dev libpq-dev && \
    a2enmod rewrite && \
    docker-php-ext-install pdo_pgsql && \
    docker-php-ext-install pgsql && \
    docker-php-ext-configure zip --with-libzip && \
    docker-php-ext-install zip && \
    rm -rf /var/lib/apt/lists/*

RUN php -r "readfile('http://getcomposer.org/installer');"|php -- --install-dir=/usr/bin --filename=composer

COPY Default.conf /etc/apache2/sites-enabled/000-default.conf

WORKDIR /var/www/app

EXPOSE 80

CMD ['/usr/sbin/apache2ctl', '-D', 'FOREGROUND']

Ma configuration est maintenant terminée.

Voyons ce qui se passe quand je l’exécute.

L’erreur à laquelle je suis confronté

Pour exécuter mon application, j’émets cette commande :

docker-compose up

Je m’attendais à ce que cela se passe bien mais j’obtiens cette erreur:

Starting laravel_web ... done
Attaching to laravel_web
laravel_web | /bin/sh: 1: [/usr/sbin/apache2ctl,: not found
laravel_web exited with code 127

J’ai d’abord pensé que apache2ctl n’était pas dans le système. J’ai regardé ici et ici mais n’a pas pu trouver la cause première.

Ensuite, j’ai trouvé ce message qui m’a conduit à la solution.

La solution

Vous devez utiliser des guillemets doubles au lieu de guillemets simples dans le Dockerfile.

Voici ce que vous devriez avoir :

CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

Conclusion

C’est drôle comme de petits détails peuvent casser tout un projet. J’ai été surpris par l’impact des guillemets doubles de version unique sur le projet. J’ai rencontré un autre problème venant d’un petit détail here mais celui-ci est surprenant.

J’espère que cette solution a aidé.

Déposez un commentaire ci-dessous si vous avez des questions.

Full Bright

Full Bright

A professional and sympathic business man.

Contact

Contact Us

To order one of our services, navigate to the order service page

Address

10 rue de Penthièvre,
75008 Paris

Email Us

hello at bright-softwares dot com

Open Hours

Monday - Friday
9:00AM - 05:00PM