The best Docker install Apache Tutorial In 2024, In this tutorial you can learn A method by constructing Dockerfile,Method two, docker pull httpd,Mirroring using apache,
First, create a directory apache, used to store back-related stuff.
w3big@w3big:~$ mkdir -p ~/apache/www ~/apache/logs ~/apache/conf
www directory will be mapped to the apache configuration container application directory
apache logs directory will be mapped to the container log directory
conf directory configuration files are mapped to the configuration file apache container
Into the apache directory created, 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 # https://httpd.apache.org/docs/2.4/install#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 /en \ && 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 file COPY httpd-foreground / usr / local / bin / httpd-foreground is a copy of the current directory to the mirror, the httpd service as a startup script, so we want to create a script file httpd-foreground locally
#!/bin/bash set -e # Apache gets grumpy about PID files pre-existing rm -f /usr/local/apache2/logs/httpd.pid exec httpd -DFOREGROUND
Given httpd-foreground file executable permissions
w3big@w3big:~/apache$ chmod +x httpd-foreground
Create a mirror through Dockerfile, replace it with your own name
w3big@w3big:~/apache$ docker build -t httpd .
Once created, we can find the image you just created in the local mirror list
w3big@w3big:~/apache$ docker images httpd REPOSITORY TAG IMAGE ID CREATED SIZE httpd latest da1536b4ef14 23 seconds ago 195.1 MB
Find httpd mirror on Docker Hub
w3big@w3big:~/apache$ docker search httpd NAME DESCRIPTION STARS OFFICIAL AUTOMATED httpd The Apache HTTP Server /en 524 [OK] centos/httpd 7 [OK] rgielen/httpd-image-php5 Docker image for Apache/en. 1 [OK] microwebapps/httpd-frontend Httpd frontend allowing/en. 1 [OK] lolhens/httpd Apache httpd 2 Server 1 [OK] publici/httpd httpd:latest 0 [OK] publicisworldwide/httpd The Apache httpd webser/en. 0 [OK] rgielen/httpd-image-simple Docker image for simple/en. 0 [OK] solsson/httpd Derivatives of the offi/en. 0 [OK] rgielen/httpd-image-drush Apache HTTPD + Drupal S/en. 0 [OK] learninglayers/httpd 0 [OK] sohrabkhan/httpd Docker httpd + php5.6 (/en. 0 [OK] aintohvri/docker-httpd Apache HTTPD Docker ext/en. 0 [OK] alizarion/httpd httpd on centos with mo/en. 0 [OK] /en.
Here we pull the official mirrors
w3big@w3big:~/apache$ docker pull httpd
Wait for the download is complete, we can be found in local mirror list REPOSITORY for httpd mirror.
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
Command Description:
-p 80:80: will be mapped to the host port 80 of the container port 80
-v $ PWD / www /: / usr / local / apache2 / htdocs /: The directory www host in the current directory is mounted to the container / usr / local / apache2 / htdocs /
-v $ PWD / conf / httpd.conf: /usr/local/apache2/conf/httpd.conf: conf will host current directory / httpd.conf file to mount the container / usr / local / apache2 / conf /httpd.conf
-v $ PWD / logs /: / usr / local / apache2 / logs /: logs directory will host the current directory is mounted to the container / usr / local / apache2 / logs /
Check the container starts circumstances
w3big@w3big:~/apache$ docker ps CONTAINER ID IMAGE COMMAND /en. PORTS NAMES 79a97f2aac37 httpd "httpd-foreground" /en. 0.0.0.0:80->80/tcp sharp_swanson
Accessed through a browser