English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Procurar Docker Hub do httpd disponível:
Pode-se ver outras versões do httpd clicando em Classificar por, a padrão é a mais recente httpd:latest.
Além disso,podemos usar o comando docker search httpd para ver as versões disponíveis:
w3codebox@w3codebox:~/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] ...
Here we pull the official image
w3codebox@w3codebox:~/apache$ docker pull httpd
After the download is complete, we can find the image with REPOSITORY as httpd in the local image list.
w3codebox@w3codebox:~/apache$ docker images httpd REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest da1536b4ef14 23 seconds ago 195.1 MB
Create Dockerfile
Firstly, create the directory apache, used to store the related things later.
w3codebox@w3codebox:~$ mkdir -p ~/apache/www ~/apache/logs ~/apache/conf
The www directory will be mapped to the application directory configured by the apache container.
The logs directory will be mapped to the logs directory of the apache container.
The configuration files in the conf directory will be mapped to the configuration files of the apache container.
Enter the created apache directory, create 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 # see 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 文件中 COPY httpd-foreground /usr/local/bin/ 是将当前目录下的 httpd-foreground 拷贝到镜像里,作为 httpd 服务的启动脚本,所以我们要在本地创建一个脚本文件 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
赋予 httpd-foreground 文件可执行权限。
w3codebox@w3codebox:~/apache$ chmod +x httpd-foreground
通过 Dockerfile 创建一个镜像,替换成你自己的名字。
w3codebox@w3codebox:~/apache$ docker build -t httpd .
创建完成后,我们可以在本地的镜像列表里查找到刚刚创建的镜像。
w3codebox@w3codebox:~/apache$ docker images httpd REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest da1536b4ef14 23 seconds ago 195.1 MB
run docker -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
Descrição do comando:
-p 80:80: Mapeie a porta 80 porta mapeada para o host 80 porta.
-v $PWD/www/:/usr/local/apache2/htdocs/: Monte o diretório www da pasta atual do host no container /usr/local/apache2/htdocs/.
-v $PWD/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf: Monte o diretório conf da pasta atual do host no container/Monte o arquivo httpd.conf no container /usr/local/apache2/conf/httpd.conf。
-v $PWD/logs/:/usr/local/apache2/logs/: Monte o diretório logs da pasta atual do host no container /usr/local/apache2/logs/.
Verifique o status de inicialização do container:
w3codebox@w3codebox:~/apache$ docker ps CONTAINER ID IMAGE COMMAND ... PORTS ... NOMES 79a97f2aac37 httpd "httpd-foreground" ... 0.0.0.0:80->80/tcp sharp_swanson
Acesse pelo navegador
Funciona! https://pt.oldtoolbag.com