RunApacheOldStyle
Run Apache Old
This section is now outdated and will be deleted.
Now add Apache to our Docker base ubuntu image.
Create a directory called ~/Docker/Apache. Create a file called:
~/Docker/Apache/000-default.conf
Place this text in it:
ServerName www.example.com
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
# ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
</VirtualHost>
Put this Dockerfile in the same directory:
FROM charliecalvert/ubuntu-base
RUN apt-get install apache2 -y
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.pid
env APACHE_RUN_DIR /var/run/apache2
env APACHE_LOCK_DIR /var/lock/apache2
ADD 000-default.conf /etc/apache2/sites-enabled/
RUN mkdir -p $APACHE_RUN_DIR $APACHE_LOCK_DIR $APACHE_LOG_DIR
EXPOSE 80
CMD ["apache2", "-D", "FOREGROUND"]
Then build it:
docker build -t <DOCKER-HUB-NAME>/apache .
And run it in the background:
docker container run -d -p 80:80 charliecalvert/apache
The above command maps the Docker container’s Port 80 to the hosts Port 80. The following command, which is given only as an fyi, maps the Docker containers Port 80 to the hosts port 10025:
docker container run --name charlie -d -p 10025:80 charliecalvert/apache
Other Old Code
In a directory called ~/Docker/MakeHtml, create this Dockerfile
FROM charliecalvert/apache
RUN apt-get install sudo -y
RUN useradd -ms /bin/bash bcuser
RUN usermod -aG sudo bcuser
RUN echo "bcuser:bcuser" | chpasswd
RUN su bcuser
RUN mkdir /home/bcuser/Git
RUN cd /home/bcuser/Git && git clone http://git@github.com/charliecalvert/JsObjects.git
RUN su -c "cd /home/bcuser/Git/JsObjects/Utilities/SetupLinuxBox && ./UbuntuSetup b" bcuser
RUN cd /home/bcuser/Git/JsObjects/Utilities/NodeInstall && echo bcuser | sudo -S ./NodeInstall.sh
RUN cd /home/bcuser/Git/JsObjects/Utilities/NodeInstall && echo bcuser | sudo -S ./NpmHelper e
This Dockerfile does a number of things, including:
- installing the sudo program so the user can use the sudo command.
- Create a user called bcuser and give the user the expected password of bcuser.
- Create a Git directory and clone JsObjects into it.
- Run UbuntuSetup in the background so no prompts are presented to the user.
- Install node and the various global NPM packages that we use most often.