Consistency of app/* (#502)
* be consistent with the use of tabs * tabs; shellcheck; consistency * use tabs * use shellcheck to fix non POSIX stuff * be consistent with the use of quotes and if-then-else / for-do-done
This commit is contained in:
parent
7647cce8c1
commit
a758c2c52b
@ -19,7 +19,7 @@ RUN apk add --no-cache \
|
|||||||
jq \
|
jq \
|
||||||
libc6-compat \
|
libc6-compat \
|
||||||
libffi-dev \
|
libffi-dev \
|
||||||
libcap \
|
libcap \
|
||||||
linux-headers \
|
linux-headers \
|
||||||
mailcap \
|
mailcap \
|
||||||
netcat-openbsd \
|
netcat-openbsd \
|
||||||
@ -29,15 +29,15 @@ RUN apk add --no-cache \
|
|||||||
|
|
||||||
# Get Mattermost
|
# Get Mattermost
|
||||||
RUN mkdir -p /mattermost/data /mattermost/plugins /mattermost/client/plugins \
|
RUN mkdir -p /mattermost/data /mattermost/plugins /mattermost/client/plugins \
|
||||||
&& if [ ! -z "$MM_BINARY" ]; then curl $MM_BINARY | tar -xvz ; \
|
&& if [ ! -z "$MM_BINARY" ]; then curl $MM_BINARY | tar -xvz ; \
|
||||||
elif [ "$edition" = "team" ] ; then curl https://releases.mattermost.com/$MM_VERSION/mattermost-team-$MM_VERSION-linux-amd64.tar.gz?src=docker-app | tar -xvz ; \
|
elif [ "$edition" = "team" ] ; then curl https://releases.mattermost.com/$MM_VERSION/mattermost-team-$MM_VERSION-linux-amd64.tar.gz?src=docker-app | tar -xvz ; \
|
||||||
else curl https://releases.mattermost.com/$MM_VERSION/mattermost-$MM_VERSION-linux-amd64.tar.gz?src=docker-app | tar -xvz ; fi \
|
else curl https://releases.mattermost.com/$MM_VERSION/mattermost-$MM_VERSION-linux-amd64.tar.gz?src=docker-app | tar -xvz ; fi \
|
||||||
&& cp /mattermost/config/config.json /config.json.save \
|
&& cp /mattermost/config/config.json /config.json.save \
|
||||||
&& rm -rf /mattermost/config/config.json \
|
&& rm -rf /mattermost/config/config.json \
|
||||||
&& addgroup -g ${PGID} mattermost \
|
&& addgroup -g ${PGID} mattermost \
|
||||||
&& adduser -D -u ${PUID} -G mattermost -h /mattermost -D mattermost \
|
&& adduser -D -u ${PUID} -G mattermost -h /mattermost -D mattermost \
|
||||||
&& chown -R mattermost:mattermost /mattermost /config.json.save /mattermost/plugins /mattermost/client/plugins \
|
&& chown -R mattermost:mattermost /mattermost /config.json.save /mattermost/plugins /mattermost/client/plugins \
|
||||||
&& setcap cap_net_bind_service=+ep /mattermost/bin/mattermost
|
&& setcap cap_net_bind_service=+ep /mattermost/bin/mattermost
|
||||||
|
|
||||||
USER mattermost
|
USER mattermost
|
||||||
|
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
# Function to generate a random salt
|
# Function to generate a random salt
|
||||||
generate_salt() {
|
generate_salt() {
|
||||||
tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 48 | head -n 1
|
tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w 48 | head -n 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Read environment variables or set default values
|
# Read environment variables or set default values
|
||||||
@ -11,64 +11,62 @@ DB_PORT_NUMBER=${DB_PORT_NUMBER:-5432}
|
|||||||
MM_DBNAME=${MM_DBNAME:-mattermost}
|
MM_DBNAME=${MM_DBNAME:-mattermost}
|
||||||
MM_CONFIG=${MM_CONFIG:-/mattermost/config/config.json}
|
MM_CONFIG=${MM_CONFIG:-/mattermost/config/config.json}
|
||||||
|
|
||||||
if [ "${1:0:1}" = '-' ]; then
|
_1=$(echo "$1" | awk '{ s=substr($0, 0, 1); print s; }' )
|
||||||
set -- mattermost "$@"
|
if [ "$_1" = '-' ]; then
|
||||||
|
set -- mattermost "$@"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "$1" = 'mattermost' ]; then
|
if [ "$1" = 'mattermost' ]; then
|
||||||
# Check CLI args for a -config option
|
# Check CLI args for a -config option
|
||||||
for ARG in $@;
|
for ARG in "$@"; do
|
||||||
do
|
case "$ARG" in
|
||||||
case "$ARG" in
|
-config=*) MM_CONFIG=${ARG#*=};;
|
||||||
-config=*)
|
esac
|
||||||
MM_CONFIG=${ARG#*=};;
|
done
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
if [ ! -f "$MM_CONFIG" ]; then
|
if [ ! -f "$MM_CONFIG" ]; then
|
||||||
# If there is no configuration file, create it with some default values
|
# If there is no configuration file, create it with some default values
|
||||||
echo "No configuration file" $MM_CONFIG
|
echo "No configuration file $MM_CONFIG"
|
||||||
echo "Creating a new one"
|
echo "Creating a new one"
|
||||||
# Copy default configuration file
|
# Copy default configuration file
|
||||||
cp /config.json.save "$MM_CONFIG"
|
cp /config.json.save "$MM_CONFIG"
|
||||||
# Substitute some parameters with jq
|
# Substitute some parameters with jq
|
||||||
jq '.ServiceSettings.ListenAddress = ":8000"' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq '.ServiceSettings.ListenAddress = ":8000"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.LogSettings.EnableConsole = true' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq '.LogSettings.EnableConsole = true' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.LogSettings.ConsoleLevel = "ERROR"' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq '.LogSettings.ConsoleLevel = "ERROR"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.FileSettings.Directory = "/mattermost/data/"' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq '.FileSettings.Directory = "/mattermost/data/"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.FileSettings.EnablePublicLink = true' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq '.FileSettings.EnablePublicLink = true' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.FileSettings.PublicLinkSalt = "'$(generate_salt)'"' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq ".FileSettings.PublicLinkSalt = \"$(generate_salt)\"" "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.EmailSettings.SendEmailNotifications = false' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq '.EmailSettings.SendEmailNotifications = false' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.EmailSettings.FeedbackEmail = ""' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq '.EmailSettings.FeedbackEmail = ""' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.EmailSettings.SMTPServer = ""' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq '.EmailSettings.SMTPServer = ""' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.EmailSettings.SMTPPort = ""' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq '.EmailSettings.SMTPPort = ""' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.EmailSettings.InviteSalt = "'$(generate_salt)'"' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq ".EmailSettings.InviteSalt = \"$(generate_salt)\"" "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.EmailSettings.PasswordResetSalt = "'$(generate_salt)'"' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq ".EmailSettings.PasswordResetSalt = \"$(generate_salt)\"" "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.RateLimitSettings.Enable = true' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq '.RateLimitSettings.Enable = true' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.SqlSettings.DriverName = "postgres"' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq '.SqlSettings.DriverName = "postgres"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.SqlSettings.AtRestEncryptKey = "'$(generate_salt)'"' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq ".SqlSettings.AtRestEncryptKey = \"$(generate_salt)\"" "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
jq '.PluginSettings.Directory = "/mattermost/plugins/"' $MM_CONFIG > $MM_CONFIG.tmp && mv $MM_CONFIG.tmp $MM_CONFIG
|
jq '.PluginSettings.Directory = "/mattermost/plugins/"' "$MM_CONFIG" > "$MM_CONFIG.tmp" && mv "$MM_CONFIG.tmp" "$MM_CONFIG"
|
||||||
else
|
else
|
||||||
echo "Using existing config file $MM_CONFIG"
|
echo "Using existing config file $MM_CONFIG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Configure database access
|
# Configure database access
|
||||||
if [[ -z "$MM_SQLSETTINGS_DATASOURCE" && ! -z "$MM_USERNAME" && ! -z "$MM_PASSWORD" ]]
|
if [ -z "$MM_SQLSETTINGS_DATASOURCE" ] && [ -n "$MM_USERNAME" ] && [ -n "$MM_PASSWORD" ]; then
|
||||||
then
|
echo "Configure database connection..."
|
||||||
echo -ne "Configure database connection..."
|
# URLEncode the password, allowing for special characters
|
||||||
# URLEncode the password, allowing for special characters
|
ENCODED_PASSWORD=$(printf %s "$MM_PASSWORD" | jq -s -R -r @uri)
|
||||||
ENCODED_PASSWORD=$(printf %s $MM_PASSWORD | jq -s -R -r @uri)
|
export MM_SQLSETTINGS_DATASOURCE="postgres://$MM_USERNAME:$ENCODED_PASSWORD@$DB_HOST:$DB_PORT_NUMBER/$MM_DBNAME?sslmode=disable&connect_timeout=10"
|
||||||
export MM_SQLSETTINGS_DATASOURCE="postgres://$MM_USERNAME:$ENCODED_PASSWORD@$DB_HOST:$DB_PORT_NUMBER/$MM_DBNAME?sslmode=disable&connect_timeout=10"
|
echo "OK"
|
||||||
echo "OK"
|
else
|
||||||
else
|
echo "Using existing database connection"
|
||||||
echo "Using existing database connection"
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
# Wait another second for the database to be properly started.
|
# Wait another second for the database to be properly started.
|
||||||
# Necessary to avoid "panic: Failed to open sql connection pq: the database system is starting up"
|
# Necessary to avoid "panic: Failed to open sql connection pq: the database system is starting up"
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
echo "Starting mattermost"
|
echo "Starting mattermost"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exec "$@"
|
exec "$@"
|
||||||
|
Reference in New Issue
Block a user