Docker menginstal Apache
Sebuah metode dengan membangun Dockerfile
Buat Dockerfile
Pertama, membuat apache direktori, digunakan untuk menyimpan barang-barang kembali terkait.
w3big@w3big:~$ mkdir -p ~/apache/www ~/apache/logs ~/apache/conf
direktori www akan dipetakan ke konfigurasi apache direktori aplikasi kontainer
apache log direktori akan dipetakan ke direktori log kontainer
file konfigurasi direktori conf dipetakan ke wadah apache file konfigurasi
Ke direktori apache dibuat, buat 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 berkas COPY httpd-foreground / usr / local / bin / httpd-foreground adalah salinan dari direktori ke cermin, layanan httpd sebagai skrip startup, jadi kami ingin membuat file script httpd-foreground lokal
#!/bin/bash set -e # Apache gets grumpy about PID files pre-existing rm -f /usr/local/apache2/logs/httpd.pid exec httpd -DFOREGROUND
Mengingat hak akses file executable httpd-foreground
w3big@w3big:~/apache$ chmod +x httpd-foreground
Buat cermin melalui Dockerfile, menggantinya dengan nama Anda sendiri
w3big@w3big:~/apache$ docker build -t httpd .
Setelah dibuat, kita dapat menemukan gambar yang baru saja dibuat dalam daftar mirror lokal
w3big@w3big:~/apache$ docker images httpd REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest da1536b4ef14 23 seconds ago 195.1 MB
Metode dua, buruh pelabuhan tarik httpd
Cari cermin httpd di 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] ...
Di sini kita tarik cermin resmi
w3big@w3big:~/apache$ docker pull httpd
Tunggu download selesai, kita dapat ditemukan dalam daftar mirror lokal repositori untuk cermin httpd.
Mirroring menggunakan apache
Jalankan wadah
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
Perintah Deskripsi:
p 80:80: akan dipetakan ke port host 80 dari pelabuhan kontainer 80
v $ PWD / www /: / usr / local / apache2 / htdocs /: Tuan rumah direktori www di direktori saat ini dipasang untuk wadah / usr / local / apache2 / htdocs /
v $ PWD / conf / httpd.conf: /usr/local/apache2/conf/httpd.conf: conf akan menjadi tuan rumah saat direktori file / httpd.conf untuk me-mount wadah / usr / local / apache2 / conf /httpd.conf
v $ PWD / log /: / usr / local / apache2 / log /: log directory akan menjadi tuan rumah direktori saat dipasang ke wadah / usr / local / apache2 / log /
Periksa wadah dimulai keadaan
w3big@w3big:~/apache$ docker ps CONTAINER ID IMAGE COMMAND ... PORTS NAMES 79a97f2aac37 httpd "httpd-foreground" ... 0.0.0.0:80->80/tcp sharp_swanson
Diakses melalui browser