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

1053.png