Docker memasang Apache



Kaedah 1. Bina melalui Dockerfile

Buat Dockerfile

Mula-mula, cipta direktori apache untuk menyimpan perkara yang berkaitan kemudian.

php@php:~$ mkdir -p  ~/apache/www ~/apache/logs ~/apache/conf

Direktori www akan dipetakan ke direktori aplikasi yang dikonfigurasikan oleh bekas apache

Direktori log akan dipetakan ke direktori log bekas apache

Konfigurasi fail dalam direktori conf akan dipetakan ke Fail konfigurasi bekas apache

memasuki direktori apache yang dicipta, mencipta fail Docker

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"]

COPY httpd-foreground /usr/local/bin/ in fail Dockerfile adalah untuk menyalin httpd-foreground dalam direktori semasa ke dalam imej sebagai skrip permulaan perkhidmatan httpd, jadi kita perlu mencipta fail skrip tempatan 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

Berikan fail httpd-foreground kebenaran boleh laku

php@php:~/apache$ chmod +x httpd-foreground

Buat cermin melalui Dockerfile , gantikan dengan nama anda sendiri

php@php:~/apache$ docker build -t httpd .

Selepas penciptaan selesai, kita boleh mencari imej yang baru dibuat dalam senarai cermin tempatan

php@php:~/apache$ docker images httpd
REPOSITORY     TAG        IMAGE ID        CREATED           SIZE
httpd          latest     da1536b4ef14    23 seconds ago    195.1 MB

Kaedah 2, docker pull httpd

Cari imej httpd pada 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]
...

Di sini kami tarik imej rasmi

php@php:~/apache$ docker pull httpd

Selepas muat turun selesai, kita boleh mencari REPOSITORY sebagai httpd dalam cermin senarai imej tempatan.


Gunakan imej apache

untuk menjalankan bekas

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

Perihalan arahan:

-p 80:80 : Alihkan bekas Port 80 dipetakan ke port 80 hos

-v $PWD/www/:/usr/local/apache2/htdocs/:Lekapkan direktori www dalam semasa direktori pada hos Kepada bekas /usr/local/apache2/htdocs/

-v $PWD/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf:Tukar hos Pasang fail conf/httpd.conf dalam direktori semasa ke /usr/local/apache2/conf/httpd.conf bekas

-v $PWD/logs/:/ usr/local/ apache2/logs/:Lekapkan direktori log dalam direktori semasa pada hos ke /usr/local/apache2/logs/

Lihat status permulaan kontena

php@php:~/apache$ docker ps
CONTAINER ID  IMAGE   COMMAND             ... PORTS               NAMES
79a97f2aac37  httpd   "httpd-foreground"  ... 0.0.0.0:80->80/tcp  sharp_swanson

Semak imbas akses Peranti

1053.png