Docker support for production use
This commit adds a Docker infrastructure that is ready for production use. It is meant to simplify the deployment of OSEM for everyone who wants to host their own instances. It includes many features like data persistence, automatic secret key generation and persistence and automatic database initialization and upgrading. This should make updating the Docker container as easy as possible.
This commit is contained in:
parent
b33e9ed28e
commit
f15fe9ddb0
6 changed files with 167 additions and 0 deletions
45
docker/init.sh
Normal file
45
docker/init.sh
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
#! /bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
# data directory is required for caching the secret key in a file
|
||||
if [ "$DATA_DIR" == "" ]; then
|
||||
echo -n "Error: DATA_DIR environment variable not set!"
|
||||
echo "Are you sure you are running this script in a Docker container?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SECRET_KEY_FILE="$DATA_DIR/secret_key"
|
||||
|
||||
if [ ! -f "$SECRET_KEY_FILE" ]; then
|
||||
install -m 0600 /dev/null "$SECRET_KEY_FILE"
|
||||
SECRET_KEY=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 100 | head -n 1)
|
||||
echo "$key" > "$SECRET_KEY_FILE"
|
||||
chmod -w "$SECRET_KEY_FILE"
|
||||
else
|
||||
SECRET_KEY=$(cat "$SECRET_KEY_FILE")
|
||||
fi
|
||||
|
||||
export SECRET_KEY
|
||||
export RAILS_ENV=production
|
||||
|
||||
install -m 0600 /dev/null .my.cnf
|
||||
cat > .my.cnf <<ABC
|
||||
[client]
|
||||
user=$MYSQL_USER
|
||||
password=$MYSQL_PASSWORD
|
||||
ABC
|
||||
|
||||
if [ $(echo "show tables;" | mysql --host $DATABASE_HOST --port $DATABASE_PORT $MYSQL_DATABASE | wc -l) -le 1 ]; then
|
||||
echo ">>> Initializing database..."
|
||||
dockerize -wait tcp://$DATABASE_HOST:$DATABASE_PORT -timeout 60s bundle exec rake db:schema:load
|
||||
fi
|
||||
|
||||
echo ">>> Upgrading database..."
|
||||
dockerize -wait tcp://$DATABASE_HOST:$DATABASE_PORT -timeout 60s bundle exec rake db:migrate
|
||||
|
||||
echo ">>> Precompiling assets..."
|
||||
bundle exec rake assets:precompile
|
||||
|
||||
echo ">>> Starting application server..."
|
||||
exec puma -e production
|
||||
Loading…
Add table
Add a link
Reference in a new issue