Docker installe Apache
Méthode 1. Construire via Dockerfile
Créer Dockerfile
Tout d'abord, créez le répertoire Apache pour stocker les éléments connexes ultérieurs.
php@php:~$ mkdir -p ~/apache/www ~/apache/logs ~/apache/conf
Le répertoire www sera mappé au répertoire d'application configuré par le conteneur Apache
Le répertoire des journaux sera mappé au répertoire des journaux du conteneur Apache
La configuration les fichiers du répertoire conf seront mappés sur Le fichier de configuration du conteneur Apache
entre dans le répertoire Apache créé, crée le 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+! /proc/self/fd/1!g' \ -e 's!^(\s*ErrorLog)\s+\S+! /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"]
COPIE httpd-foreground /usr/local/bin/ dans le fichier Dockerfile consiste à copier httpd-foreground dans le répertoire courant dans l'image en tant que script de démarrage du service httpd, nous devons donc créer un fichier de script httpd-foreground localement
#!/bin/bash set -e # Apache gets grumpy about PID files pre-existing rm -f /usr/local/apache2/logs/httpd.pid exec httpd -DFOREGROUND
Donner le fichier httpd-foreground autorisations exécutables
php@php:~/apache$ chmod +x httpd-foreground
Créez un miroir via Dockerfile , remplacez-le par votre propre nom
php@php:~/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 miroirs locaux
php@php:~/apache$ docker images httpd REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest da1536b4ef14 23 seconds ago 195.1 MB
Méthode 2, docker pull httpd
Trouvez l'image httpd sur Docker Hub
php@php:~/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 extrayons l'image officielle
php@php:~/apache$ docker pull httpd
Une fois le téléchargement terminé, nous pouvons trouver le REPOSITORY sous la forme httpd dans le miroir de la liste d'images locale.
Utilisez l'image Apache
pour exécuter 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 : Déplacer le conteneur Le port 80 est mappé au port 80 de l'hôte
-v $PWD/www/:/usr/local/apache2/htdocs/:Monter le répertoire www dans le répertoire actuel répertoire sur l'hôte Vers le /usr/local/apache2/htdocs/
-v $PWD/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf:Changez l'hôte Montez le fichier conf/httpd.conf dans le répertoire actuel dans /usr/local/apache2/conf/httpd.conf
-v $PWD/logs/:/ usr/local/ apache2/logs/ :Montez le répertoire des journaux dans le répertoire actuel de l'hôte sur /usr/local/apache2/logs/
Affichez l'état de démarrage du conteneur
php@php:~/apache$ docker ps CONTAINER ID IMAGE COMMAND ... PORTS NAMES 79a97f2aac37 httpd "httpd-foreground" ... 0.0.0.0:80->80/tcp sharp_swanson
En parcourant Accès aux appareils