mirror of
https://github.com/zulip/docker-zulip.git
synced 2025-11-07 15:33:16 +00:00
Renamed the zulip folder to zulip-puppet
The entrypoint.sh is now a fully functional setup and run script for zulip installations in docker.
This commit is contained in:
11
Dockerfile
11
Dockerfile
@@ -2,13 +2,16 @@ FROM ubuntu:trusty
|
|||||||
|
|
||||||
MAINTAINER Alexander Trost <galexrt@googlemail.com>
|
MAINTAINER Alexander Trost <galexrt@googlemail.com>
|
||||||
|
|
||||||
ENV ZULIP_GROUP="zulip" ZULIP_USER="zulip" ZULIP_DIR="/home/zulip" ZULIP_VERSION="1.3.6" \
|
ENV ZULIP_DIR="/home/zulip" ZULIP_VERSION="1.3.6" \
|
||||||
DB_HOST="localhost" DB_PORT="5432" DB_USER="zulip" DB_PASSWORD="zulip" \
|
DB_HOST="localhost" DB_PORT="5432" DB_USER="zulip" DB_PASSWORD="zulip" \
|
||||||
DATA_DIR="/data"
|
DATA_DIR="/data" \
|
||||||
|
ZULIP_USER_FULLNAME="Zulip Docker" ZULIP_USER_EMAIL="" ZULIP_USER_PASSWORD="foobar" \
|
||||||
|
ZULIP_SAVE_SETTINGS_PY="" ZULIP_USE_EXTERNAL_SETTINGS="false" \
|
||||||
|
ZULIP_SETTINGS_EXTERNAL_HOST="localhost" \
|
||||||
|
ZULIP_SECRETS_email_password=""
|
||||||
|
|
||||||
ADD entrypoint.sh /entrypoint.sh
|
ADD entrypoint.sh /entrypoint.sh
|
||||||
ADD includes/zulip /root/zulip-puppet
|
ADD includes/zulip-puppet /root/zulip-puppet
|
||||||
# Self made puppet command: puppet apply --modulepath=/root/zulip/puppet -e "Exec { path => \"/usr/sbin:/usr/bin:/sbin:/bin\" }\ninclude apt\ninclude zulip::voyager"
|
|
||||||
# mkdir -p "$ZULIP_DEPLOY_PATH" && \
|
# mkdir -p "$ZULIP_DEPLOY_PATH" && \
|
||||||
RUN chmod 755 /entrypoint.sh && \
|
RUN chmod 755 /entrypoint.sh && \
|
||||||
apt-get -qq update -q && \
|
apt-get -qq update -q && \
|
||||||
|
|||||||
@@ -22,7 +22,24 @@ function configure-rabbitmq(){
|
|||||||
rabbitmqctl set_permissions -p / zulip '.*' '.*' '.*'
|
rabbitmqctl set_permissions -p / zulip '.*' '.*' '.*'
|
||||||
}
|
}
|
||||||
|
|
||||||
# Taken from /home/zulip/deployments/current/scripts/setup/postgres-init-db
|
function add-custom-zulip-secrets(){
|
||||||
|
ZULIP_SECRETS="/etc/zulip/zulip-secrets.conf"
|
||||||
|
for SECRET_KEY in ("google_oauth2_client_secret" "email_password" "twitter_consumer_key" "s3_key" "s3_secret_key" "twitter_consumer_secret" "twitter_access_token_key" "twitter_access_token_secret"); do
|
||||||
|
SECRET_VAR="${!ZULIP_SECRETS_$SECRET_KEY}"
|
||||||
|
if [ -z "$SECRET_VAR" ]; then
|
||||||
|
set +x
|
||||||
|
echo "No settings env var found for key \"$SECRET_KEY\". Continuing."
|
||||||
|
set -x
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
set +x
|
||||||
|
echo "Setting secret \"$SECRET_KEY\"."
|
||||||
|
echo "$SECRET_KEY = '$SECRET_VAR'" >> "$ZULIP_SECRETS"
|
||||||
|
set -x
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Taken from the zulip/zulip but modified it a bit
|
||||||
# A little modification was needed to work with this setup
|
# A little modification was needed to work with this setup
|
||||||
function postgres-init-db(){
|
function postgres-init-db(){
|
||||||
# Don't "leak" the password out
|
# Don't "leak" the password out
|
||||||
@@ -47,6 +64,57 @@ function initialize-database(){
|
|||||||
su zulip -c "$MANAGE_PY initialize_voyager_db"
|
su zulip -c "$MANAGE_PY initialize_voyager_db"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setup-zulip-settings(){
|
||||||
|
ZULIP_SETTINGS="/etc/zulip/settings.py"
|
||||||
|
if [ "$ZULIP_USE_EXTERNAL_SETTINGS" == "true" ] && [ -f "$DATA_DIR/settings.py" ]; then
|
||||||
|
rm -f "$ZULIP_SETTINGS"
|
||||||
|
cp -rf "$DATA_DIR/settings.py" "$ZULIP_SETTINGS"
|
||||||
|
chown zulip:zulip "$ZULIP_SETTINGS"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
# ^#?([a-zA-Z0-9_]*)[ ]*=[ ]*([\"'].*[\"']+|[\(\{]+(\n[^)]*)+.*[\)\}])$ and ^#?[ ]?([a-zA-Z0-9_]*)
|
||||||
|
for SETTING_KEY in $(grep -E "^#?([a-zA-Z0-9_]*)[ ]*=[ ]*([\"'].*[\"']+|[\(\{]+(\n[^)]*)+.*[\)\}])$" "$ZULIP_SETTINGS" | grep -oE "^#?[ ]?([a-zA-Z0-9_]*)") "S3_AUTH_UPLOADS_BUCKET" "S3_AVATAR_BUCKET"; do
|
||||||
|
SETTING_VAR="${!ZULIP_SETTINGS_$SETTING_KEY}"
|
||||||
|
if [ -z "$SETTING_VAR" ]; then
|
||||||
|
set +x
|
||||||
|
echo "No settings env var found for key \"$SETTING_KEY\". Continuing."
|
||||||
|
set -x
|
||||||
|
continue
|
||||||
|
fi
|
||||||
|
set +x
|
||||||
|
echo "Setting key \"$SETTING_KEY\" to value \"$SETTING_VAR\"."
|
||||||
|
set -x
|
||||||
|
sed -i "s~#?${SETTING_KEY}[ ]*=[ ]*['\"]+.*['\"]+$~${SETTING_KEY} = '${SETTING_VAR}'~g" "$ZULIP_SETTINGS"
|
||||||
|
done
|
||||||
|
if [ -z "$ZULIP_SAVE_SETTINGS_PY" ]; then
|
||||||
|
rm -f "$DATA_DIR/settings.py"
|
||||||
|
cp -f "$ZULIP_SETTINGS" "$DATA_DIR/settings.py"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function zulip-create-user(){
|
||||||
|
if [ -z "$ZULIP_USER_EMAIL" ]; then
|
||||||
|
set +x
|
||||||
|
echo "No zulip user email given."
|
||||||
|
set -x
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if [ -z "$ZULIP_USER_PASSWORD" ]; then
|
||||||
|
set +x
|
||||||
|
echo "No zulip user password given."
|
||||||
|
set -x
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if [ -z "$ZULIP_USER_FULLNAME" ]; then
|
||||||
|
set +x
|
||||||
|
echo "No zulip user full name given. Defaulting to \"Zulip Docker\""
|
||||||
|
set -x
|
||||||
|
ZULIP_USER_FULLNAME="Zulip Docker"
|
||||||
|
fi
|
||||||
|
su zulip -c " $MANAGE_PY create_user --new-email \"$ZULIP_USER_EMAIL\" --new-password \"$ZULIP_USER_PASSWORD\""
|
||||||
|
su zulip -c "$MANAGE_PY knight \"$ZULIP_USER_FULLNAME\" -f"
|
||||||
|
}
|
||||||
|
|
||||||
# Configure rabbitmq server everytime because it could be a new one ;)
|
# Configure rabbitmq server everytime because it could be a new one ;)
|
||||||
configure-rabbitmq
|
configure-rabbitmq
|
||||||
|
|
||||||
@@ -54,12 +122,13 @@ if [ ! -f "$DATA_DIR/.initiated" ]; then
|
|||||||
set +x
|
set +x
|
||||||
echo "Initiating Zulip Installation ..."
|
echo "Initiating Zulip Installation ..."
|
||||||
echo "==="
|
echo "==="
|
||||||
echo "Generating secrets ..."
|
echo "Generating and setting secrets ..."
|
||||||
set -x
|
set -x
|
||||||
# Generate the secrets
|
# Generate the secrets
|
||||||
/root/zulip/scripts/setup/generate_secrets.py
|
/root/zulip/scripts/setup/generate_secrets.py
|
||||||
|
add-custom-zulip-secrets
|
||||||
set +x
|
set +x
|
||||||
echo "Secrets generated."
|
echo "Secrets generated and set."
|
||||||
echo "Creating/updating statics ..."
|
echo "Creating/updating statics ..."
|
||||||
set -x
|
set -x
|
||||||
# Without the secrets we can't update the prod-static files :(
|
# Without the secrets we can't update the prod-static files :(
|
||||||
@@ -73,12 +142,14 @@ if [ ! -f "$DATA_DIR/.initiated" ]; then
|
|||||||
set -x
|
set -x
|
||||||
# Init Postgres database server
|
# Init Postgres database server
|
||||||
postgres-init-db
|
postgres-init-db
|
||||||
|
|
||||||
# Modify settings.py here
|
|
||||||
cat /etc/settings.py
|
|
||||||
|
|
||||||
set +x
|
set +x
|
||||||
echo "Database setup done."
|
echo "Database setup done."
|
||||||
|
echo "Setting Zulip settings ..."
|
||||||
|
set -x
|
||||||
|
# Setup zulip settings
|
||||||
|
setup-zulip-settings
|
||||||
|
set +x
|
||||||
|
echo "Zulip settings setup done."
|
||||||
echo "Initiating Database ..."
|
echo "Initiating Database ..."
|
||||||
set -x
|
set -x
|
||||||
# Init database with something (data? :D)
|
# Init database with something (data? :D)
|
||||||
@@ -91,6 +162,11 @@ if [ ! -f "$DATA_DIR/.initiated" ]; then
|
|||||||
touch "$DATA_DIR/.initiated"
|
touch "$DATA_DIR/.initiated"
|
||||||
set +x
|
set +x
|
||||||
echo "Database initiated."
|
echo "Database initiated."
|
||||||
|
echo "Creating zulip user account ..."
|
||||||
|
set -x
|
||||||
|
zulip-create-user
|
||||||
|
set +x
|
||||||
|
echo "Created zulip user account"
|
||||||
echo "==="
|
echo "==="
|
||||||
echo "Zulip initiation done."
|
echo "Zulip initiation done."
|
||||||
set -x
|
set -x
|
||||||
|
|||||||
Reference in New Issue
Block a user