How to create a Docker Container for Linux Apache MySQL PHP and Python for beginners.
Note: Containers are not persistent. Use this for tests only. If you want to keep persistent information use Volumes.
File: Dockerfile
FROM ubuntu:20.04 MAINTAINER Carles Mateo ARG DEBIAN_FRONTEND=noninteractive RUN apt update && \ apt install -y vim python3-pip && \ apt install -y net-tools mc vim htop less strace zip gzip lynx && \ apt install -y apache2 mysql-server ntpdate libapache2-mod-php7.4 mysql-server php7.4-mysql php-dev libmcrypt-dev php-pear && \ apt install -y git && apt autoremove && apt clean && \ pip3 install pytest RUN a2enmod rewrite RUN echo "Europe/Ireland" | tee /etc/timezone ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 ENV APACHE_PID_FILE /var/run/apache2/apache2.pid ENV APACHE_RUN_DIR /var/run/apache2 ENV APACHE_LOCK_DIR /var/lock/apache2 ENV APACHE_LOG_DIR /var/log/apache2 COPY phpinfo.php /var/www/html/ RUN service apache2 restart EXPOSE 80 CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]
File: phpinfo.php
<html> <?php // Show all information, defaults to INFO_ALL phpinfo(); // Show just the module information. // phpinfo(8) yields identical results. phpinfo(INFO_MODULES); ?> </html>
File: build_docker.sh
#!/bin/bash s_DOCKER_IMAGE_NAME="lampp" echo "We will build the Docker Image and name it: ${s_DOCKER_IMAGE_NAME}" echo "After, we will be able to run a Docker Container based on it." printf "Removing old image %s\n" "${s_DOCKER_IMAGE_NAME}" sudo docker rm "${s_DOCKER_IMAGE_NAME}" printf "Creating Docker Image %s\n" "${s_DOCKER_IMAGE_NAME}" # sudo docker build -t ${s_DOCKER_IMAGE_NAME} . --no-cache sudo docker build -t ${s_DOCKER_IMAGE_NAME} . i_EXIT_CODE=$? if [ $i_EXIT_CODE -ne 0 ]; then printf "Error. Exit code %s\n" ${i_EXIT_CODE} exit fi echo "Ready to run ${s_DOCKER_IMAGE_NAME} Docker Container" echo "To run in type: sudo docker run -p 80:80 --name ${s_DOCKER_IMAGE_NAME} ${s_DOCKER_IMAGE_NAME}" echo "or just use run_in_docker.sh" echo echo "If you want to debug do:" echo "docker exec -i -t ${s_DOCKER_IMAGE_NAME} /bin/bash"