From 0cbed2d5d231b6a90c92b83b596ab0dafe142988 Mon Sep 17 00:00:00 2001 From: Christian Musa Date: Sat, 11 Feb 2017 00:33:20 -0300 Subject: [PATCH] Improve docker support - Add docker-compose file - Add environment variable to initialize the database - Add custom entrypoint that generates the .env file based on the environment variables - Update Dockerfile (gettext-base package) --- .env.docker | 55 ++++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 3 +++ docker-compose.yml | 33 ++++++++++++++++++++++++++ docker/entrypoint.sh | 16 +++++++++++++ 4 files changed, 107 insertions(+) create mode 100644 .env.docker create mode 100644 docker-compose.yml create mode 100755 docker/entrypoint.sh diff --git a/.env.docker b/.env.docker new file mode 100644 index 0000000000..69765bff51 --- /dev/null +++ b/.env.docker @@ -0,0 +1,55 @@ +APP_ENV=${FF_APP_ENV} +APP_DEBUG=false +APP_FORCE_SSL=false +APP_FORCE_ROOT= +APP_KEY=${FF_APP_KEY} +APP_LOG=daily +APP_LOG_LEVEL=warning +APP_URL=http://localhost + +DB_CONNECTION=mysql +DB_HOST=${FF_DB_HOST} +DB_PORT=3306 +DB_DATABASE=${FF_DB_NAME} +DB_USERNAME=${FF_DB_USER} +DB_PASSWORD=${FF_DB_PASSWORD} + +BROADCAST_DRIVER=log +CACHE_DRIVER=file +SESSION_DRIVER=file +QUEUE_DRIVER=sync + +COOKIE_PATH="/" +COOKIE_DOMAIN= +COOKIE_SECURE=false + +REDIS_HOST=127.0.0.1 +REDIS_PASSWORD=null +REDIS_PORT=6379 + +MAIL_DRIVER=smtp +MAIL_HOST=mailtrap.io +MAIL_PORT=2525 +MAIL_FROM=changeme@example.com +MAIL_USERNAME=null +MAIL_PASSWORD=null +MAIL_ENCRYPTION=null + +SEND_REGISTRATION_MAIL=true +SEND_ERROR_MESSAGE=true +SHOW_INCOMPLETE_TRANSLATIONS=false + +CACHE_PREFIX=firefly + +GOOGLE_MAPS_API_KEY= +ANALYTICS_ID= +SITE_OWNER=mail@example.com +USE_ENCRYPTION=true + +PUSHER_KEY= +PUSHER_SECRET= +PUSHER_APP_ID= + +DEMO_USERNAME= +DEMO_PASSWORD= + diff --git a/Dockerfile b/Dockerfile index 2311881871..7d00a3724b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -12,6 +12,7 @@ RUN apt-get update -y && \ libxml2-dev \ libsqlite3-dev \ libbz2-dev \ + gettext-base \ locales && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* @@ -44,3 +45,5 @@ WORKDIR /var/www/firefly-iii RUN composer install --no-scripts --no-dev USER root + +ENTRYPOINT ["/var/www/firefly-iii/docker/entrypoint.sh"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000..cdf765d487 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,33 @@ +version: '2' + +services: + firefly-db: + image: mysql:8 + environment: + - MYSQL_DATABASE=firefly_db + - MYSQL_USER=firefly_db + - MYSQL_PASSWORD=firefly_db_secret + - MYSQL_RANDOM_ROOT_PASSWORD=yes + volumes: + - firefly-storage:/var/lib/mysql + + firefly-app: + image: firefly-iii + build: + context: . + environment: + - INIT_DATABASE=yes + - FF_DB_HOST=firefly-db + - FF_DB_NAME=firefly_db + - FF_DB_USER=firefly_db + - FF_DB_PASSWORD=firefly_db_secret + - FF_APP_KEY=SomeRandomStringOf32CharsExactly + - FF_APP_ENV=development + ports: + - "80:80" + links: + - firefly-db + +volumes: + firefly-storage: + driver: local \ No newline at end of file diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100755 index 0000000000..2ae2404c2c --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,16 @@ +#!/bin/bash + +cat .env.docker | envsubst > .env + +if [ "${INIT_DATABASE:="no"}" = "yes" ]; then + echo "Init database detected, checking mysql status" + # depends on your machine, but it may take a file to boot mysql container the first time + until php artisan firefly:verify &>/dev/null + do + echo "waiting mysql" + sleep 10 + done + php artisan migrate:refresh --seed +fi + +exec apache2-foreground \ No newline at end of file