#!/bin/bash set -e SCRIPTPATH=$(cd "$(dirname "$0")" > /dev/null; pwd -P) SOURCE_DIR=$(cd "$SCRIPTPATH" > /dev/null; cd ../.. > /dev/null; pwd -P) DATA_DIR="$SOURCE_DIR/data/postgres" PLUGINS_DIR="$SOURCE_DIR/plugins" show_help() { cat <& 2 show_help >& 2 exit 1 ;; esac shift done echo "Using source in: ${SOURCE_DIR}" echo "Using data in: ${DATA_DIR}" mkdir -p "${DATA_DIR}" mount_plugin_symlinks="" for symlink in $(find $PLUGINS_DIR -type l); do # This deliberately does not use the `-f` option to canonicalize the value # because 1) the BSD `readlink` does not support the option, and 2) a # relative link would not work inside the container anyway. symlink_value=$(readlink $symlink) mount_plugin_symlinks+=" -v ${symlink_value}:${symlink_value}:delegated" done # 1080 mailcatcher # 3000 puma... if you must (but unicorn is preferred) # 9292 unicorn # 9405 prometheus exporter docker pull discourse/discourse_dev:release docker run -d \ -p $local_publish:1080:1080 \ -p $local_publish:3000:3000 \ -p $local_publish:9292:9292 \ -p $local_publish:9405:9405 \ -v "$DATA_DIR:/shared/postgres_data:delegated" \ -v "$SOURCE_DIR:/src:delegated" \ -e UNICORN_BIND_ALL=true \ $mount_plugin_symlinks \ $ENV_ARGS \ --hostname=discourse \ --name=discourse_dev \ --restart=always \ discourse/discourse_dev:release /sbin/boot if [ "${initialize}" = "initialize" ]; then echo "Installing gems..." "${SCRIPTPATH}/bundle" install echo "Migrating database..." "${SCRIPTPATH}/rake" db:migrate RAILS_ENV=test "${SCRIPTPATH}/rake" db:migrate echo "Creating admin user..." "${SCRIPTPATH}/rake" admin:create fi