Docker LEMP Stack
Here is how I setup a Docker LEMP stack on Ubuntu 14.04 w/ Mariadb and redis
FROM ubuntu:14.04.2 MAINTAINER hpz <email> RUN echo "deb http://ppa.launchpad.net/nginx/stable/ubuntu trusty main" > /etc/apt/sources.list.d/nginx.list RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys C300EE8C RUN apt-get update RUN apt-get -y upgrade RUN apt-get -y install curl mcrypt php5-cli php5-fpm php5-mysql php5-mcrypt redis-tools nginx RUN php5enmod mcrypt RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ RUN mv /usr/bin/composer.phar /usr/bin/composer RUN echo "daemon off;" >> /etc/nginx/nginx.conf RUN rm -f /etc/nginx/sites-available/default COPY default /etc/nginx/sites-available/default RUN rm /var/www/html/* VOLUME ["/var/log/", "/var/www/html/"] EXPOSE 80 CMD service php5-fpm start && nginx
Below is my default nginx site file
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; root /var/www/html/; index index.php index.html index.htm; server_name localhost; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri =403; fastcgi_pass unix:/var/run/php5-fpm.sock; include fastcgi_params; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
Lets build our image
docker build -t nginx_1
Then run the following to set it all up
docker run --name mariadb -e MYSQL_ROOT_PASSWORD=docker -e MYSQL_DATABASE=db1 -p 3306:3306 -d mariadb docker run --name redis -d redis docker run --name nginx --link mariadb:mariadb --link redis:redis -p 80:80 -v /path/to/local/docker/www/:/var/www/html -d nginx_1
If we want to connect to our nginx container shell:
docker run --rm -t -i --volumes-from nginx --link redis:redis --link mariadb:mariadb nginx_1 /bin/bash
docker cleanup:
occasionally I want to clean everything up and start fresh
docker stop $(docker ps -q) docker rm $(docker ps -aq) docker rmi $(docker images|grep "^<none>" | awk '{print $3}')