diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..dfaf03e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,62 @@ +FROM ubuntu:14.04 +MAINTAINER Ric Harvey + +# Surpress Upstart errors/warning +RUN dpkg-divert --local --rename --add /sbin/initctl +RUN ln -sf /bin/true /sbin/initctl + +# Let the conatiner know that there is no tty +ENV DEBIAN_FRONTEND noninteractive + +# Add sources for latest nginx +RUN apt-get install -y wget +RUN wget -q http://nginx.org/keys/nginx_signing.key -O- | sudo apt-key add - +RUN echo deb http://nginx.org/packages/debian/ trusty nginx >> /etc/apt/sources.list +RUN echo deb-src http://nginx.org/packages/debian/ trusty nginx >> /etc/apt/sources.list + +# Update System +RUN apt-get update +RUN apt-get -y upgrade + +# Basic Requirements +RUN apt-get -y install nginx php5-fpm php5-mysql php-apc pwgen python-setuptools curl git unzip + +# Install Extra PHP Modules +RUN apt-get -y install php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl + +# tweak nginx config +RUN sed -i -e"s/keepalive_timeout\s*65/keepalive_timeout 2/" /etc/nginx/nginx.conf +RUN sed -i -e"s/keepalive_timeout 2/keepalive_timeout 2;\n\tclient_max_body_size 100m/" /etc/nginx/nginx.conf +RUN echo "daemon off;" >> /etc/nginx/nginx.conf + +# tweak php-fpm config +RUN sed -i -e "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" /etc/php5/fpm/php.ini +RUN sed -i -e "s/upload_max_filesize\s*=\s*2M/upload_max_filesize = 100M/g" /etc/php5/fpm/php.ini +RUN sed -i -e "s/post_max_size\s*=\s*8M/post_max_size = 100M/g" /etc/php5/fpm/php.ini +RUN sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php5/fpm/php-fpm.conf +RUN sed -i -e "s/;catch_workers_output\s*=\s*yes/catch_workers_output = yes/g" /etc/php5/fpm/pool.d/www.conf +RUN find /etc/php5/cli/conf.d/ -name "*.ini" -exec sed -i -re 's/^(\s*)#(.*)/\1;\2/g' {} \; + +# nginx site conf +ADD ./nginx-site.conf /etc/nginx/sites-available/default + +# add test PHP file +ADD ./inde.php /usr/share/nginx/www/index.php + +# Supervisor Config +RUN /usr/bin/easy_install supervisor +RUN /usr/bin/easy_install supervisor-stdout +ADD ./supervisord.conf /etc/supervisord.conf + +# Git Pull in here +### TO DO ### + +# Start Supervisord +ADD ./start.sh /start.sh +RUN chmod 755 /start.sh + +# Expose Ports +EXPOSE 443 +EXPOSE 80 + +CMD ["/bin/bash", "/start.sh"] diff --git a/index.php b/index.php new file mode 100644 index 0000000..0cde37f --- /dev/null +++ b/index.php @@ -0,0 +1,5 @@ + diff --git a/nginx-site.conf b/nginx-site.conf new file mode 100644 index 0000000..d38829f --- /dev/null +++ b/nginx-site.conf @@ -0,0 +1,45 @@ +server { + listen 80; ## listen for ipv4; this line is default and implied + listen [::]:80 default ipv6only=on; ## listen for ipv6 + + root /usr/share/nginx/www; + index index.php index.php index.html index.htm; + + # Make site accessible from http://localhost/ + server_name localhost; + + # Disable sendfile as per https://docs.vagrantup.com/v2/synced-folders/virtualbox.html + sendfile off; + + location / { + # First attempt to serve request as file, then + # as directory, then fall back to index.html + try_files $uri $uri/ /index.php?q=$uri&$args; + } + + #error_page 404 /404.html; + + # redirect server error pages to the static page /50x.html + # + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/www; + } + + # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 + # + location ~ \.php$ { + try_files $uri =404; + fastcgi_split_path_info ^(.+\.php)(/.+)$; + fastcgi_pass unix:/var/run/php5-fpm.sock; + fastcgi_index index.php; + include fastcgi_params; + } + + # deny access to .htaccess files, if Apache's document root + # concurs with nginx's one + # + location ~ /\.ht { + deny all; + } +} diff --git a/stat.sh b/stat.sh new file mode 100644 index 0000000..598fa56 --- /dev/null +++ b/stat.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# start supervisord +/usr/local/bin/supervisord -n diff --git a/supervisord.conf b/supervisord.conf new file mode 100644 index 0000000..f992b5f --- /dev/null +++ b/supervisord.conf @@ -0,0 +1,42 @@ +[unix_http_server] +file=/tmp/supervisor.sock ; (the path to the socket file) + +[supervisord] +logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log) +logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB) +logfile_backups=10 ; (num of main logfile rotation backups;default 10) +loglevel=info ; (log level;default info; others: debug,warn,trace) +pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid) +nodaemon=false ; (start in foreground if true;default false) +minfds=1024 ; (min. avail startup file descriptors;default 1024) +minprocs=200 ; (min. avail process descriptors;default 200) + +; the below section must remain in the config file for RPC +; (supervisorctl/web interface) to work, additional interfaces may be +; added by defining them in separate rpcinterface: sections +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket + +[program:php5-fpm] +command=/usr/sbin/php5-fpm -c /etc/php5/fpm +stdout_events_enabled=true +stderr_events_enabled=true + +[program:php5-fpm-log] +command=tail -f /var/log/php5-fpm.log +stdout_events_enabled=true +stderr_events_enabled=true + +[program:nginx] +command=/usr/sbin/nginx +stdout_events_enabled=true +stderr_events_enabled=true + +[eventlistener:stdout] +command = supervisor_stdout +buffer_size = 100 +events = PROCESS_LOG +result_handler = supervisor_stdout:event_handler