Encapsulate .env setup commands

This commit is contained in:
Michael Andrews 2017-05-23 14:52:33 -07:00
parent 2ecd090356
commit ba16f80c2e
4 changed files with 39 additions and 30 deletions

View file

@ -20,7 +20,8 @@ COPY . /app
ARG OUTDATED_DOCKER_IMAGE_NAMESPACE=false
ENV OUTDATED_DOCKER_IMAGE_NAMESPACE ${OUTDATED_DOCKER_IMAGE_NAMESPACE}
ADD ["docker/scripts/setup", "docker/multi-process/scripts/init", "/scripts/"]
ADD ["docker/scripts/setup", "docker/scripts/setup_env", "docker/multi-process/scripts/init", "/scripts/"]
RUN /scripts/setup
VOLUME /var/lib/mysql

35
docker/scripts/setup_env Executable file
View file

@ -0,0 +1,35 @@
#!/bin/bash
set -e
export LC_ALL=en_US.UTF-8
cd /app
# Configure database based on linked container
if [ -n "${MYSQL_PORT_3306_TCP_ADDR}" ]; then
DATABASE_ADAPTER=${DATABASE_ADAPTER:-mysql2}
DATABASE_HOST=${DATABASE_HOST:-${MYSQL_PORT_3306_TCP_ADDR}}
DATABASE_PORT=${DATABASE_PORT:-${MYSQL_PORT_3306_TCP_PORT}}
DATABASE_ENCODING=${DATABASE_ENCODING:-utf8mb4}
elif [ -n "${POSTGRES_PORT_5432_TCP_ADDR}" ]; then
DATABASE_ADAPTER=${DATABASE_ADAPTER:-postgresql}
DATABASE_HOST=${DATABASE_HOST:-${POSTGRES_PORT_5432_TCP_ADDR}}
DATABASE_PORT=${DATABASE_PORT:-${POSTGRES_PORT_5432_TCP_PORT}}
DATABASE_ENCODING=utf8
fi
USE_GRAPHVIZ_DOT=${USE_GRAPHVIZ_DOT:-${USE_GRAPHVIZ_DOT:-dot}}
# Default to the environment variable values set in .env.example
IFS="="
grep = /app/.env.example | sed -e 's/^#\([^ ]\)/\1/' | grep -v -e '^#' | \
while read var value ; do
eval "echo \"$var=\${$var:-\${HUGINN_$var-\$value}}\""
done | grep -v -e ^= > /app/.env
eval "echo PORT=${PORT:-${PORT:-3000}}" >> .env
eval "echo RAILS_ENV=${RAILS_ENV:-${RAILS_ENV:-production}}" >> .env
eval "echo RAILS_LOG_TO_STDOUT=true" >> .env
eval "echo RAILS_SERVE_STATIC_FILES=true" >> .env
chmod ugo+r /app/.env

View file

@ -17,7 +17,7 @@ COPY . /app
ARG OUTDATED_DOCKER_IMAGE_NAMESPACE=false
ENV OUTDATED_DOCKER_IMAGE_NAMESPACE ${OUTDATED_DOCKER_IMAGE_NAMESPACE}
ADD ["docker/scripts/setup", "docker/single-process/scripts/init", "/scripts/"]
ADD ["docker/scripts/setup", "docker/scripts/setup_env", "docker/single-process/scripts/init", "/scripts/"]
RUN /scripts/setup

View file

@ -13,34 +13,7 @@ if [ -z "$APP_SECRET_TOKEN" ] && grep -q ^APP_SECRET_TOKEN=REPLACE_ME_NOW .env.e
sed -i.orig "s:REPLACE_ME_NOW:$secret:" .env.example
fi
# Configure database based on linked container
if [ -n "${MYSQL_PORT_3306_TCP_ADDR}" ]; then
DATABASE_ADAPTER=${DATABASE_ADAPTER:-mysql2}
DATABASE_HOST=${DATABASE_HOST:-${MYSQL_PORT_3306_TCP_ADDR}}
DATABASE_PORT=${DATABASE_PORT:-${MYSQL_PORT_3306_TCP_PORT}}
DATABASE_ENCODING=${DATABASE_ENCODING:-utf8mb4}
elif [ -n "${POSTGRES_PORT_5432_TCP_ADDR}" ]; then
DATABASE_ADAPTER=${DATABASE_ADAPTER:-postgresql}
DATABASE_HOST=${DATABASE_HOST:-${POSTGRES_PORT_5432_TCP_ADDR}}
DATABASE_PORT=${DATABASE_PORT:-${POSTGRES_PORT_5432_TCP_PORT}}
DATABASE_ENCODING=utf8
fi
USE_GRAPHVIZ_DOT=${USE_GRAPHVIZ_DOT:-${USE_GRAPHVIZ_DOT:-dot}}
# Default to the environment variable values set in .env.example
IFS="="
grep = /app/.env.example | sed -e 's/^#\([^ ]\)/\1/' | grep -v -e '^#' | \
while read var value ; do
eval "echo \"$var=\${$var:-\${HUGINN_$var-\$value}}\""
done | grep -v -e ^= > /app/.env
eval "echo PORT=${PORT:-${PORT:-3000}}" >> .env
eval "echo RAILS_ENV=${RAILS_ENV:-${RAILS_ENV:-production}}" >> .env
eval "echo RAILS_LOG_TO_STDOUT=true" >> .env
eval "echo RAILS_SERVE_STATIC_FILES=true" >> .env
chmod ugo+r /app/.env
/scripts/setup_env
source /app/.env
# use default port number if it is still not set