From dbda00cef8bcf696da90924619b710ff69ee01b3 Mon Sep 17 00:00:00 2001 From: Ryan Trauntvein Date: Mon, 6 Jul 2015 23:59:08 -0700 Subject: [PATCH] Use .env file with docker image --- Dockerfile | 39 ++++++++++++----------------- docker/.env.docker | 22 +++++++++++++++++ docker/entrypoint.sh | 58 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 95 insertions(+), 24 deletions(-) create mode 100644 docker/.env.docker create mode 100755 docker/entrypoint.sh diff --git a/Dockerfile b/Dockerfile index 1345d31a..2cd61fc2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,42 +1,33 @@ FROM debian:jessie -ENV DB_DRIVER=mysql \ - ENV=production \ - DB_DATABASE=cachet \ - DB_HOST= \ - DB_USERNAME= \ - DB_PASSWORD= \ - DEBIAN_FRONTEND=noninteractive - -COPY . /var/www/html/ -WORKDIR /var/www/html/ - # Using nodesource and debian jessie packages instead of compiling from scratch -RUN echo "APT::Install-Recommends \"0\";" >> /etc/apt/apt.conf.d/02recommends && \ +RUN DEBIAN_FRONTEND=noninteractive \ + echo "APT::Install-Recommends \"0\";" >> /etc/apt/apt.conf.d/02recommends && \ echo "APT::Install-Suggests \"0\";" >> /etc/apt/apt.conf.d/02recommends && \ apt-get -qq update && \ apt-get -qq install \ ca-certificates nginx php5-fpm=5.* php5-curl php5-readline php5-mcrypt php5-mysql php5-apcu php5-cli \ git sqlite libsqlite3-dev curl supervisor php5-pgsql && \ apt-get clean && apt-get autoremove -qq && \ - rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man /tmp/* && \ - chown -R www-data /var/www/html + rm -rf /var/lib/apt/lists/* /usr/share/doc /usr/share/man /tmp/* -# Hardcode the Illuminate key in config/app.php. If you want security, feel free -# to override the key in your own container with a 'php artisan key:generate' :) -RUN sed -i "s/'key' => '\w.*/'key' => 'f20d3e5ae02125a94bd60203a4edfbde',/" config/app.php && \ - grep key config/app.php +COPY docker/supervisord.conf /etc/supervisor/supervisord.conf +COPY docker/entrypoint.sh /sbin/entrypoint.sh +COPY . /var/www/html/ +WORKDIR /var/www/html/ # copy the various nginx and supervisor conf (to handle both fpm and nginx) RUN sed -i -e "s/;daemonize\s*=\s*yes/daemonize = no/g" /etc/php5/fpm/php-fpm.conf ;\ echo "daemon off;" >> /etc/nginx/nginx.conf ;\ mv /var/www/html/docker/php-fpm-pool.conf /etc/php5/fpm/pool.d/www.conf ;\ - rm -f /etc/nginx/sites-enabled/* && rm -f /etc/nginx/conf.d/* && mv /var/www/html/docker/nginx-site.conf /etc/nginx/conf.d/default.conf - -RUN curl -sS https://getcomposer.org/installer | php && php composer.phar install --no-dev -o - -COPY docker/supervisord.conf /etc/supervisor/supervisord.conf + rm -f /etc/nginx/sites-enabled/* ;\ + rm -f /etc/nginx/conf.d/* ;\ + mv /var/www/html/docker/nginx-site.conf /etc/nginx/conf.d/default.conf ;\ + mv /var/www/html/docker/.env.docker /var/www/html/.env ;\ + rm -r /var/www/html/docker ;\ + chown -R www-data /var/www/html ;\ + curl -sS https://getcomposer.org/installer | php && php composer.phar install --no-dev -o EXPOSE 8000 -CMD ["/usr/bin/supervisord"] +CMD ["/sbin/entrypoint.sh"] \ No newline at end of file diff --git a/docker/.env.docker b/docker/.env.docker new file mode 100644 index 00000000..ab0557d9 --- /dev/null +++ b/docker/.env.docker @@ -0,0 +1,22 @@ +APP_ENV={{APP_ENV}} +APP_DEBUG={{APP_DEBUG}} +APP_URL={{APP_URL}} +APP_KEY={{APP_KEY}} + +DB_DRIVER={{DB_DRIVER}} +DB_HOST={{DB_HOST}} +DB_DATABASE={{DB_DATABASE}} +DB_USERNAME={{DB_USERNAME}} +DB_PASSWORD={{DB_PASSWORD}} + +CACHE_DRIVER={{CACHE_DRIVER}} +SESSION_DRIVER={{SESSION_DRIVER}} +QUEUE_DRIVER={{QUEUE_DRIVER}} + +MAIL_DRIVER={{MAIL_DRIVER}} +MAIL_HOST={{MAIL_HOST}} +MAIL_PORT={{MAIL_PORT}} +MAIL_USERNAME={{MAIL_USERNAME}} +MAIL_PASSWORD={{MAIL_PASSWORD}} +MAIL_ADDRESS={{MAIL_ADDRESS}} +MAIL_NAME={{MAIL_NAME}} diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100755 index 00000000..3ff361d4 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,58 @@ +#!/bin/bash +set -e + +APP_ENV=${APP_ENV:-local} +APP_DEBUG=${APP_DEBUG:-true} +APP_URL=${APP_URL:-http://localhost} +APP_KEY=${APP_KEY:-SomeRandomString} + +DB_DRIVER=${DB_DRIVER:-mysql} +DB_HOST=${DB_HOST:-mysql} +DB_DATABASE=${DB_DATABASE:-cachet} +DB_USERNAME=${DB_USERNAME:-cachet} +DB_PASSWORD=${DB_PASSWORD:-cachet} + +CACHE_DRIVER=${CACHE_DRIVER:-file} +SESSION_DRIVER=${SESSION_DRIVER:-file} +QUEUE_DRIVER=${QUEUE_DRIVER:-database} + +MAIL_DRIVER=${MAIL_DRIVER:-smtp} +MAIL_HOST=${MAIL_HOST:-mailtrap.io} +MAIL_PORT=${MAIL_PORT:-2525} +MAIL_USERNAME=${MAIL_USERNAME:-null} +MAIL_PASSWORD=${MAIL_PASSWORD:-null} +MAIL_ADDRESS=${MAIL_ADDRESS:-null} +MAIL_NAME=${MAIL_NAME:-null} + +# configure env file + +sed 's,{{APP_ENV}},'"${APP_ENV}"',g' -i /var/www/html/.env +sed 's,{{APP_DEBUG}},'"${APP_DEBUG}"',g' -i /var/www/html/.env +sed 's,{{APP_URL}},'"${APP_URL}"',g' -i /var/www/html/.env +sed 's,{{APP_KEY}},'"${APP_KEY}"',g' -i /var/www/html/.env + +sed 's,{{DB_DRIVER}},'"${DB_DRIVER}"',g' -i /var/www/html/.env +sed 's,{{DB_HOST}},'"${DB_HOST}"',g' -i /var/www/html/.env +sed 's,{{DB_DATABASE}},'"${DB_DATABASE}"',g' -i /var/www/html/.env +sed 's,{{DB_USERNAME}},'"${DB_USERNAME}"',g' -i /var/www/html/.env +sed 's,{{DB_PASSWORD}},'"${DB_PASSWORD}"',g' -i /var/www/html/.env + +sed 's,{{CACHE_DRIVER}},'"${CACHE_DRIVER}"',g' -i /var/www/html/.env +sed 's,{{SESSION_DRIVER}},'"${SESSION_DRIVER}"',g' -i /var/www/html/.env +sed 's,{{QUEUE_DRIVER}},'"${QUEUE_DRIVER}"',g' -i /var/www/html/.env + +sed 's,{{MAIL_DRIVER}},'"${MAIL_DRIVER}"',g' -i /var/www/html/.env +sed 's,{{MAIL_HOST}},'"${MAIL_HOST}"',g' -i /var/www/html/.env +sed 's,{{MAIL_PORT}},'"${MAIL_PORT}"',g' -i /var/www/html/.env +sed 's,{{MAIL_USERNAME}},'"${MAIL_USERNAME}"',g' -i /var/www/html/.env +sed 's,{{MAIL_PASSWORD}},'"${MAIL_PASSWORD}"',g' -i /var/www/html/.env +sed 's,{{MAIL_ADDRESS}},'"${MAIL_ADDRESS}"',g' -i /var/www/html/.env +sed 's,{{MAIL_NAME}},'"${MAIL_NAME}"',g' -i /var/www/html/.env + +#Clear cache +/usr/bin/php composer.phar install --no-dev -o + +echo "Starting supervisord..." +exec /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf + +exit 0 \ No newline at end of file