Latest web development tutorials

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