Problem
User wants to create docker container with httpd, PHP and various modules
Solution
Create a file called Dockerfile in the directory for the build (or download the docker file and rename to Docker without extension ) and copy this contents
FROM centos:7
# Install Apache
RUN yum -y update
RUN yum -y install httpd httpd-tools# Install EPEL Repo
RUN rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm \
&& rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm# Install PHP
RUN yum -y install php72w php72w-bcmath php72w-cli php72w-common php72w-gd php72w-intl php72w-ldap php72w-mbstring \
php72w-mysql php72w-pear php72w-soap php72w-xml php72w-xmlrpc# Update Apache Configuration
RUN sed -E -i -e '/<Directory "\/var\/www\/html">/,/<\/Directory>/s/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf
RUN sed -E -i -e 's/DirectoryIndex (.*)$/DirectoryIndex index.php \1/g' /etc/httpd/conf/httpd.confEXPOSE 80
# Start Apache
CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
Build the Docker
docker build -t image_httpd .
Run the Docker
Specify the directory with your site for the httpd server to mount as volume inside the container it will be mounted to /var/www/html which was specified as the httpd root directory in the Docker file. the port of the container is 8080 ( just incase httpd server exists on port 80 ).
docker run -tid -p 8080:80 --name=container_httpd -v /home/website:/var/www/html image_httpd
change the value to 80:80 if you want to run as standard httpd
Test
use your curl or your favorite browser to access the server
Attachment: Dockerfile.txt
We do this for a living.
Kubernetes, DevOps and platform engineering, delivered in days — not another weekend lost to a stack trace.
Start a project →