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