Hello,

Je viens de créer ma propre image afin d'avoir le container que je souhaite (elle existe peut-être déjà mais je pourrais ainsi la modeler à ma façon)

Quand je restart mon container (crée à partir de mon image, celui ci passe en status :

Exited (0) About a minute ago

Alors que j'ai juste fait un docker restart.

Voici mon Dockerfiles :

FROM debian:jessie
RUN apt-get update \
&& apt-get install -y apache2 \
&& echo "deb http://packages.dotdeb.org jessie all" > /etc/apt/sources.list.d/dotdeb.list \
&& apt-get install -y wget \
&& wget https://www.dotdeb.org/dotdeb.gpg \
&& apt-key add dotdeb.gpg \
&& apt-get update \
&& apt-get install -y php7.0 php7.0-fpm \
&& apt-get install -y libapache2-mod-php7.0

ADD host-apache2.conf /etc/apache2/site-enabled/000-default.conf
ADD index.html /var/www/html/index.html

CMD /usr/sbin/apache2ctl -D FOREGROUND

Je l'ai run ainsi :

docker run -d -p 80:80 lopom/apache2php7

Est-ce que je dois mettre quelque chose de spécial dans mon docker file afin que je puisse stop/start/restart mon container sans que celui-ci soit en status exited ?

Message d'erreur :
λ Xtazy apache2php7 → docker logs 5c795ff7a998
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
httpd (pid 8) already running

Merci d'avance,
Cordialement.

    J'ai réussi à avancer sur le sujet, mais je n'ai pas encore réussi à le résoudre.
    au nvieau de l'erreur ServerName je la skip ce n'est pas ça qui empêche le restart de mon containeur.
    Le problème est :

    Marcoxavier httpd (pid 8) already running

    Suite à quelque recherches sur google, je suis tombé sur une page qui décrivait comment résoudre ce pb de tel manière :

    Rajouter ceci dans le dockerfile :

    ENV  APACHE_RUN_USER=www-data \
            APACHE_RUN_GROUP=www-data \
            APACHE_LOG_DIR=/var/log/apache2 \
            APACHE_LOCK_DIR=/var/lock/apache2 \
            APACHE_RUN_DIR=/var/run/apache2 \
            APACHE_PID_FILE=/var/run/apache2.pid 
    
    COPY ./storage/scripts/* /scripts/
    
    RUN chmod +x /scripts/*
    
    CMD ["/scripts/boot.sh"]

    Et créer le script boot.sh avec ceci dedans :

    #!/bin/bash
    if [ ! -d "$APACHE_RUN_DIR" ]; then
    mkdir "$APACHE_RUN_DIR"
    chown $APACHE_RUN_USER:$APACHE_RUN_GROUP "$APACHE_RUN_DIR"
    fi
    if [ -f "$APACHE_PID_FILE" ]; then
    rm "$APACHE_PID_FILE"
    fi
    /usr/sbin/apache2ctl -D FOREGROUND

    Ce script à pour but de supprimer le apache2.pid (ce qui est le problème)
    J'ai tester manuellement de supprimer ce fichier dans mon container, puis de relancer celui-ci et ça a fonctionné correctement.

    Malheuresement, je n'ai pas l'impression que le script se lance à chaque fois que je fait un "docker restart <container>"
    du coup le PID est toujours présent..

    Savez-vous comment faire en sorte que le script soit exécuter à chaque restart de mon container ?
    Ou si vous savez comment supprimer ce PID a chaque restart d'une autre manière je suis également preneur.

    Merci d'avance

    C'est peut être une c... de ma part, mais il me semble que sous debian, un apt-get install lance le service. Du coup, tu fais un apt-get install apache2, et à partir de là, apache tourne. Est-ce que tu peux tenter de faire un "systemctl stop apache2" après toutes tes install ?

    Hello, merci de la réponse.

    Je pense pas que cela changera quelque chose, à la fin de mon dockerfile j'ai mis CMD /usr/sbin/apache2ctl car sinon apache ne se lance pas.

    De plus pour ceux que ca intéresse, j'ai trouvé une solution de contournement.
    Passez ce container sous docker-compose, comme ceci :

      webserver:
        image: lopom/apache2php7
        restart: always
        container_name: webserver
        hostname: webserver
        ports:
          - "80:80"
        volumes:
          - /root/.apps/<user>/werbserv/:/data
        environment:
          - VIRTUAL_PORT=80
          - VIRTUAL_HOST=web<ndd>
          - LETSENCRYPT_HOST=web<ndd>
          - LETSENCRYPT_EMAIL=contact@<ndd>

    grace à cette configuration sous docker-compose, je peux faire un docker-compose restart webserver et celui-ci se relance correctement, sans problème de PID.

      Marcoxavier Je pense pas que cela changera quelque chose, à la fin de mon dockerfile j'ai mis CMD /usr/sbin/apache2ctl car sinon apache ne se lance pas.

      Justement, cette commande essaie de lancer apache, mais échoue car apache tourne déjà. Du coup, comme c'est la commande du docker, ton docker s'arrête.
      Si jamais apache ne tournait pas au moment où cette commande est lancée, ton docker continuerait à tourner. D'où ma proposition d'arrêter le service avant de lancer ta commande.

        Merrick J'ai pas de problème au premier lancement de mon docker, celui-ci fonctionne très bien, c'est uniquement quand je faisais un docker restart webserver

        pas de soucis, je te remercie du temps que tu as passé pour essayer de résoudre mon problème 😀

        Répondre…