Docker installer Apache
Procédé de construction d'Dockerfile
Créer Dockerfile
Tout d'abord, créer un apache répertoire utilisé pour stocker des trucs liés à dos.
w3big@w3big:~$ mkdir -p ~/apache/www ~/apache/logs ~/apache/conf
répertoire www sera mappé sur le répertoire de l'application de conteneur de configuration apache
apache logs sera mappé sur le répertoire des journaux de conteneur
les fichiers de configuration du répertoire conf sont mappés sur le conteneur apache du fichier de configuration
Dans le répertoire apache créé, créez 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"]
Dockerfile fichier COPY httpd-plan / usr / local / bin / httpd-plan est une copie du répertoire courant vers le miroir, le service httpd comme un script de démarrage, nous voulons donc créer un fichier de script httpd-plan local
#!/bin/bash set -e # Apache gets grumpy about PID files pre-existing rm -f /usr/local/apache2/logs/httpd.pid exec httpd -DFOREGROUND
permissions fichier exécutables httpd-plan Étant donné
w3big@w3big:~/apache$ chmod +x httpd-foreground
Créer un miroir à travers Dockerfile, remplacez-le avec votre propre nom
w3big@w3big:~/apache$ docker build -t httpd .
Une fois créé, nous pouvons trouver l'image que vous venez de créer dans la liste de miroir local
w3big@w3big:~/apache$ docker images httpd REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest da1536b4ef14 23 seconds ago 195.1 MB
Méthode deux, docker traction httpd
Trouver miroir httpd sur Docker Hub
w3big@w3big:~/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 retirons les miroirs officiels
w3big@w3big:~/apache$ docker pull httpd
Attendez que le téléchargement est terminé, nous pouvons être trouvés dans le dépôt de la liste de miroir local pour miroir de httpd.
Reflétant en utilisant apache
conteneur Run
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
Commande Description:
-p 80:80: sera mappé sur le port hôte 80 du port de conteneurs 80
-v $ PWD / www /: / usr / local / apache2 / htdocs /: Le répertoire www hôte dans le répertoire courant est monté sur le conteneur / usr / local / apache2 / htdocs /
-v $ PWD / conf / httpd.conf: /usr/local/apache2/conf/httpd.conf: conf sera l' hôte fichier actuel répertoire / httpd.conf pour monter le conteneur / usr / apache2 / conf / local /httpd.conf
-v $ PWD / logs /: / usr / local / apache2 / logs /: logs accueillera le répertoire courant est monté sur le conteneur / usr / local / apache2 / logs /
Vérifier le conteneur commence circonstances
w3big@w3big:~/apache$ docker ps CONTAINER ID IMAGE COMMAND ... PORTS NAMES 79a97f2aac37 httpd "httpd-foreground" ... 0.0.0.0:80->80/tcp sharp_swanson
Accessibles par un navigateur