├── Dockerfile ├── Makefile ├── boot.sh ├── caddy-0.9 ├── caddy.conf ├── caddy.sh ├── fpmpool.conf ├── logrotate_laravel.conf ├── logs.sh ├── phpfpm.sh └── renovate.json /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM phusion/baseimage:latest 2 | 3 | MAINTAINER "Luca Critelli" 4 | 5 | RUN locale-gen en_US.UTF-8 6 | ENV LANG en_US.UTF-8 7 | ENV LANGUAGE en_US:en 8 | ENV LC_ALL en_US.UTF-8 9 | 10 | RUN apt-get update && \ 11 | apt-get install -y software-properties-common && \ 12 | LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php && \ 13 | apt-get update && \ 14 | apt-get upgrade -y && \ 15 | BUILD_PACKAGES="python3 php7.0-fpm php7.0-zip php7.0-bz2 php7.0-mysql php-memcached php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php7.0-mcrypt php7.0-sqlite3 php7.0-tidy php7.0-pgsql php7.0-xml nano php-mbstring" && \ 16 | apt-get -y install $BUILD_PACKAGES && \ 17 | apt-get remove --purge -y software-properties-common && \ 18 | apt-get autoremove -y && \ 19 | apt-get clean && \ 20 | apt-get autoclean && \ 21 | echo -n > /var/lib/apt/extended_states && \ 22 | rm -rf /var/lib/apt/lists/* && \ 23 | rm -rf /usr/share/man/?? && \ 24 | rm -rf /usr/share/man/??_* && \ 25 | find /etc/php/7.0/cli/conf.d/ -name "*.ini" -exec sed -i -re 's/^(\s*)#(.*)/\1;\2/g' {} \; && \ 26 | rm /etc/php/7.0/cli/conf.d/20-mcrypt.ini && rm /etc/php/7.0/fpm/conf.d/20-mcrypt.ini && \ 27 | phpenmod mcrypt && mkdir /run/php && chmod 777 /run/php && \ 28 | sed -i -e "s/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/g" /etc/php/7.0/fpm/php.ini && \ 29 | sed -i -e "s/upload_max_filesize\s*=\s*2M/upload_max_filesize = 100M/g" /etc/php/7.0/fpm/php.ini && \ 30 | sed -i -e "s/post_max_size\s*=\s*8M/post_max_size = 100M/g" /etc/php/7.0/fpm/php.ini && \ 31 | sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php/7.0/fpm/php-fpm.conf && \ 32 | mkdir -p /var/www && \ 33 | usermod -u 1000 www-data && \ 34 | usermod -a -G users www-data && \ 35 | chown -R www-data:www-data /var/www/ && \ 36 | mkdir -p /etc/service/caddy && \ 37 | mkdir -p /etc/service/phpfpm && \ 38 | mkdir /etc/service/logs && \ 39 | mkdir -p /etc/my_init.d && \ 40 | php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ 41 | php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" && \ 42 | php composer-setup.php --install-dir=/usr/local/bin --filename=composer && \ 43 | php -r "unlink('composer-setup.php');" 44 | 45 | 46 | 47 | COPY ./fpmpool.conf /etc/php/7.0/fpm/pool.d/www.conf 48 | COPY ./caddy-0.9 /bin/caddy 49 | ADD logrotate_laravel.conf /etc/logrotate.d/laravel 50 | COPY ./caddy.conf /caddy.conf 51 | 52 | ADD ./caddy.sh /etc/service/caddy/run 53 | ADD ./phpfpm.sh /etc/service/phpfpm/run 54 | ADD ./boot.sh /etc/my_init.d/boot.sh 55 | ADD ./logs.sh /etc/service/logs/run 56 | 57 | RUN chmod +x /etc/service/caddy/run && chmod +x /etc/service/phpfpm/run && chmod +x /etc/my_init.d/boot.sh && chmod 777 /etc/service/logs/run 58 | 59 | 60 | ENV APP_ENV=local \ 61 | APP_DEBUG=true \ 62 | DB_HOST=db \ 63 | DB_DATABASE=laravel \ 64 | DB_USERNAME=laravel \ 65 | DB_PASSWORD=laravelpass \ 66 | APP_URL="http://laravel.dev" \ 67 | APP_KEY="kD7qEXQBJUmURfVHvsHyWTVG9UmkZoUR" \ 68 | DB_TYPE=pgsql \ 69 | DB_PORT=5432 \ 70 | QUEUE_DRIVER=beanstalkd \ 71 | QUEUE_HOST=queue \ 72 | CACHE_DRIVER=redis \ 73 | REDIS_HOST=redis \ 74 | SESSION_DRIVER=redis \ 75 | APP_FILESYSTEM=local \ 76 | MAIL_PRETEND=true 77 | 78 | 79 | CMD ["/sbin/my_init"] 80 | EXPOSE 80 -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | TAG := latest 2 | IMAGE := lucacri/laravelcaddy 3 | 4 | build: 5 | @docker build -t ${IMAGE}:${TAG} . 6 | 7 | push: 8 | @docker push ${IMAGE}:${TAG} 9 | -------------------------------------------------------------------------------- /boot.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | printenv > /var/www/.env 3 | version=$(head -n 1 /var/www/version.txt) 4 | echo "APP_VERSION=$version" >> /var/www/.env 5 | 6 | php /var/www/artisan config:clear > /dev/null 2>&1 || true 7 | php /var/www/artisan migrate --force > /dev/null 2>&1 || true 8 | touch /var/www/storage/logs/laravel.log 9 | chown -R www-data:www-data /var/www/storage > /dev/null 2>&1 || true 10 | php /var/www/artisan config:cache > /dev/null 2>&1 || true 11 | php /var/www/artisan route:cache > /dev/null 2>&1 || true 12 | php /var/www/artisan optimize --force > /dev/null 2>&1 || true 13 | -------------------------------------------------------------------------------- /caddy-0.9: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lucacri/laravelcaddy/74985093c9120d88da7b0fa747b228d7218988eb/caddy-0.9 -------------------------------------------------------------------------------- /caddy.conf: -------------------------------------------------------------------------------- 1 | :80 { 2 | root /var/www/public 3 | fastcgi / 127.0.0.1:8999 php 4 | errors stderr 5 | log stdout 6 | gzip 7 | rewrite { 8 | to {path} {path}/ /index.php?{query} 9 | } 10 | realip { 11 | header X-Forwarded-For 12 | } 13 | header /images/ Cache-Control "max-age=2592000" 14 | header /build/ Cache-Control "max-age=2592000" 15 | header /fonts/ Cache-Control "max-age=2592000" 16 | } -------------------------------------------------------------------------------- /caddy.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | exec /bin/caddy -agree=true -conf=/caddy.conf -------------------------------------------------------------------------------- /fpmpool.conf: -------------------------------------------------------------------------------- 1 | error_log = syslog 2 | [www] 3 | user = www-data 4 | group = www-data 5 | listen = 127.0.0.1:8999 6 | ;listen = /run/php-fpm.sock 7 | ;listen.owner = www-data 8 | ;listen.group = www-data 9 | ;listen.mode = 0750 10 | pm = dynamic 11 | pm.max_children = 16 12 | pm.min_spare_servers = 4 13 | pm.max_spare_servers = 8 14 | pm.max_requests = 2000 15 | slowlog = /var/log/php-fpm-slow.log 16 | rlimit_files = 131072 17 | rlimit_core = 0 18 | chdir = / 19 | listen.backlog = 65536 -------------------------------------------------------------------------------- /logrotate_laravel.conf: -------------------------------------------------------------------------------- 1 | /var/www/storage/*.log { 2 | daily 3 | missingok 4 | rotate 2 5 | compress 6 | delaycompress 7 | notifempty 8 | create 0640 www-data www-data 9 | } -------------------------------------------------------------------------------- /logs.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | exec /usr/bin/tail -f /var/www/storage/logs/laravel.log -------------------------------------------------------------------------------- /phpfpm.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | exec /usr/sbin/php-fpm7.0 -c /etc/php/7.0/fpm -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": [ 3 | "config:base" 4 | ] 5 | } 6 | --------------------------------------------------------------------------------