mirror of
https://github.com/discourse/discourse.git
synced 2024-12-14 18:33:42 +08:00
d8412f409a
symlinks where not fully resolved leading to docker not booting when you had symlinks in the plugins directory pointing at relative paths.
109 lines
2.9 KiB
Bash
Executable File
109 lines
2.9 KiB
Bash
Executable File
#!/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 <<EOF
|
|
Usage: ${0##*/} [-e VAR=VAL] [--env VAR=VAL] [--env-file filename] [-h] [--init]
|
|
|
|
-e, --env set environment variables
|
|
--env-file pass in a file containing a list of environment variable assignments
|
|
--init perform first-time initialization
|
|
-p --net-public publish ports on container on 0.0.0.0 (less secure as users on LAN may see dev env)
|
|
EOF
|
|
}
|
|
|
|
initialize=""
|
|
ENV_ARGS=""
|
|
local_publish="127.0.0.1"
|
|
|
|
while [ "${#@}" -ne "0" ]; do
|
|
case "$1" in
|
|
-h | --help)
|
|
show_help
|
|
exit 0
|
|
;;
|
|
-i | --init)
|
|
initialize="initialize"
|
|
;;
|
|
-p | --net-public)
|
|
local_publish="0.0.0.0"
|
|
;;
|
|
-e | --env)
|
|
if [ -z "$2" ]; then
|
|
show_help
|
|
exit 0
|
|
else
|
|
ENV_ARGS+=" -e $2"
|
|
shift
|
|
fi
|
|
;;
|
|
--env-file)
|
|
if [ -z "$2" ]; then
|
|
show_help
|
|
exit 0
|
|
else
|
|
ENV_ARGS="--env-file=$2"
|
|
break
|
|
fi
|
|
;;
|
|
*)
|
|
echo "unexpected argument: $1" >& 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 -f $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
|