Installer Apache avec Docker
Méthode 1 : docker pull httpd
RechercherDocker HubL'image httpd sur Docker Hub :
Vous pouvez utiliser Trier par pour afficher d'autres versions de httpd ; la version par défaut est la dernière version.httpd:latest。
De plus, nous pouvons également utiliser la commande docker search httpd pour afficher les versions disponibles :
example@example:~/apache$ docker search httpd NAME DESCRIPTION STARS OFFICIAL AUTOMATED httpd The Apache HTTP Server .. 524 [OK] centos/httpd 7 [OK] rgielen/httpd-image-php5 Docker image for Apache... 1 [OK] microwebapps/httpd-frontend Httpd frontend allowing... 1 [OK] lolhens/httpd Apache httpd 2 Server 1 [OK] publici/httpd httpd:latest 0 [OK] publicisworldwide/httpd The Apache httpd webser... 0 [OK] rgielen/httpd-image-simple Docker image for simple... 0 [OK] solsson/httpd Derivatives of the offi... 0 [OK] rgielen/httpd-image-drush Apache HTTPD + Drupal S... 0 [OK] learninglayers/httpd 0 [OK] sohrabkhan/httpd Docker httpd + php5.6 (... 0 [OK] aintohvri/docker-httpd Apache HTTPD Docker ext... 0 [OK] alizarion/httpd httpd on centos with mo... 0 [OK] ...
Ici, nous récupérons l'image officielle.
example@example:~/apache$ docker pull httpd
Une fois le téléchargement terminé, nous pouvons trouver l'image avec REPOSITORY httpd dans la liste des images locales.
example@example:~/apache$ docker images httpd REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest da1536b4ef14 23 seconds ago 195.1 MB
Méthode 2 : Construire via Dockerfile
Créer un Dockerfile
Tout d'abord, créez un répertoire apache pour stocker les éléments associés pour plus tard.
example@example:~$ mkdir -p ~/apache/www ~/apache/logs ~/apache/conf
Le répertoire www sera mappé sur le répertoire d'application configuré par le conteneur apache.
Le répertoire logs sera mappé sur le répertoire de logs du conteneur apache.
Les fichiers de configuration du répertoire conf seront mappés sur les fichiers de configuration du conteneur apache.
Entrez dans le répertoire apache créé et créez un Dockerfile.
FROM debian:jessie # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added #RUN groupadd -r www-data && useradd -r --create-home -g www-data www-data ENV HTTPD_PREFIX /usr/local/apache2 ENV PATH $PATH:$HTTPD_PREFIX/bin RUN mkdir -p "$HTTPD_PREFIX" \ && chown www-data:www-data "$HTTPD_PREFIX" WORKDIR $HTTPD_PREFIX # install httpd runtime dependencies # https://httpd.apache.org/docs/2.4/install.html#requirements RUN apt-get update \ && apt-get install -y --no-install-recommends \ libapr1 \ libaprutil1 \ libaprutil1-ldap \ libapr1-dev \ libaprutil1-dev \ libpcre++0 \ libssl1.0.0 \ && rm -r /var/lib/apt/lists/* ENV HTTPD_VERSION 2.4.20 ENV HTTPD_BZ2_URL https://www.apache.org/dist/httpd/httpd-$HTTPD_VERSION.tar.bz2 RUN buildDeps=' \ ca-certificates \ curl \ bzip2 \ gcc \ libpcre++-dev \ libssl-dev \ make \ ' \ set -x \ && apt-get update \ && apt-get install -y --no-install-recommends $buildDeps \ && rm -r /var/lib/apt/lists/* \ \ && curl -fSL "$HTTPD_BZ2_URL" -o httpd.tar.bz2 \ && curl -fSL "$HTTPD_BZ2_URL.asc" -o httpd.tar.bz2.asc \ # see https://httpd.apache.org/download.cgi#verify && export GNUPGHOME="$(mktemp -d)" \ && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys A93D62ECC3C8EA12DB220EC934EA76E6791485A8 \ && gpg --batch --verify httpd.tar.bz2.asc httpd.tar.bz2 \ && rm -r "$GNUPGHOME" httpd.tar.bz2.asc \ \ && mkdir -p src \ && tar -xvf httpd.tar.bz2 -C src --strip-components=1 \ && rm httpd.tar.bz2 \ && cd src \ \ && ./configure \ --prefix="$HTTPD_PREFIX" \ --enable-mods-shared=reallyall \ && make -j"$(nproc)" \ && make install \ \ && cd .. \ && rm -r src \ \ && sed -ri \ -e 's!^(\s*CustomLog)\s+\S+!\1 /proc/self/fd/1!g' \ -e 's!^(\s*ErrorLog)\s+\S+!\1 /proc/self/fd/2!g' \ "$HTTPD_PREFIX/conf/httpd.conf" \ \ && apt-get purge -y --auto-remove $buildDeps COPY httpd-foreground /usr/local/bin/ EXPOSE 80 CMD ["httpd-foreground"]
Dans le Dockerfile, l'instruction COPY httpd-foreground /usr/local/bin/ copie httpd-foreground depuis le répertoire courant dans l'image en tant que script de démarrage du service httpd, nous devons donc créer localement un fichier de script httpd-foreground.
#!/bin/bash set -e # Apache gets grumpy about PID files pre-existing rm -f /usr/local/apache2/logs/httpd.pid exec httpd -DFOREGROUND
Accordez la permission d'exécution au fichier httpd-foreground.
example@example:~/apache$ chmod +x httpd-foreground
Créez une image via un Dockerfile, et remplacez son nom par le vôtre.
example@example:~/apache$ docker build -t httpd .
Une fois la création terminée, nous pouvons trouver l'image qui vient d'être créée dans la liste des images locales.
example@example:~/apache$ docker images httpd REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest da1536b4ef14 23 seconds ago 195.1 MB
Utilisez l'image apache.
Lancer le conteneur
docker run -p 80:80 -v $PWD/www/:/usr/local/apache2/htdocs/ -v $PWD/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf -v $PWD/logs/:/usr/local/apache2/logs/ -d httpd
Description de la commande :
-p 80:80:Le premier port 80 est le port hôte, tandis que le second est le port du conteneur, ce qui fait correspondre le port 80 du conteneur au port 80 de l'hôte.
-v $PWD/www/:/usr/local/apache2/htdocs/:Montez le répertoire www situé sous le répertoire courant de l'hôte vers /usr/local/apache2/htdocs/ dans le conteneur.
-v $PWD/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf:Montez le fichier conf/httpd.conf situé dans le répertoire courant sur l'hôte vers /usr/local/apache2/conf/httpd.conf dans le conteneur.
-v $PWD/logs/:/usr/local/apache2/logs/:Montez le répertoire logs situé dans le répertoire courant sur l'hôte vers /usr/local/apache2/logs/ dans le conteneur.
Pour des commandes plus détaillées, reportez-vous à :Commande Docker run
Vérifiez l'état de démarrage du conteneur :
example@example:~/apache$ docker ps CONTAINER ID IMAGE COMMAND ... PORTS NAMES 79a97f2aac37 httpd "httpd-foreground" ... 0.0.0.0:80->80/tcp sharp_swanson
Accès via navigateur

