3c9fcf6fce
Merge branch 'master' of github.com:lbryio/lbry-docker Starting on a .travis.yml but may be unnecessary Renamed www.spee.ch and lbrynet-daemon to reflect their upstream repos. Disabled Adminer Started debug for chainquery container. Get latest release tagged url from github API remove zip.zip maybe? debugging curl explicit unzip Adding -o for unzip simplified, removed debug and fixed curl reverted to original unzip function Pull chainquery from prep container passing alternative config path Aligned config path location with linux spec updated config location maybe don't be as explicit adding debug for chainqueryconfig.toml Fixes magicless chainquery and starts on bootstrap added chainquery/.gitignore to ignore large blobs. fixed Dockerfile up to use staged prep and production removed db-seed.sh as we have quick-bootstrap.sh start.sh needed modification to pull config from the right location in the linux FS Added chainquery/.dockerignore to prevent extremely long build times in the future Removed fancy bash vars in chainquery/.env Started work on getting quick-bootstrap.sh ready for release. Switch to lbrynet network Switched network name to lbrynet Merge branch 'leopere' of github.com:lbryio/lbry-docker into leopere Remove debugging access port bind Expose chainquery to the internet Merge branch 'leopere' of github.com:lbryio/lbry-docker into leopere Removed now unnecessary run command Undo Cleanup and commenting on environment variables Start getting ready for adding chainquery start.sh magic Quick update
168 lines
6.5 KiB
Bash
Executable file
168 lines
6.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
set -eo pipefail
|
|
## Add -x to set if you want really explicit feedback.
|
|
## -u breaks unbound variables
|
|
## This docker-entrypoint will take a copy of the configuration and install any
|
|
## ENVVARS and then copy any required files into the /app/ directory next to any
|
|
## custom files added by the user.
|
|
|
|
# default to run whatever the user wanted like "/bin/ash"
|
|
## If user runs no need to run any more of the entrypoint script.
|
|
if [[ -z "$@" ]]; then
|
|
echof info "User did not attempt input. Now executing docker-entrypoint."
|
|
else
|
|
echof info "Running $@."
|
|
exec "$@"
|
|
exit 1
|
|
fi
|
|
|
|
ENVVARS=("MYSQL_ENV_MYSQL_USER"
|
|
"MYSQL_ENV_MYSQL_PASSWORD"
|
|
"MYSQL_ENV_MYSQL_DATABASE"
|
|
"MYSQL_ENV_MYSQL_ADDRESS"
|
|
"GOOGLE_ANALYTICS_UID"
|
|
"SITE_TITLE"
|
|
"SITE_ADDRESS"
|
|
"SITE_DESCRIPTION"
|
|
)
|
|
# MYSQL_ENV_MYSQL_USER=alphauser
|
|
# MYSQL_ENV_MYSQL_PASSWORD=alphapassword
|
|
# MYSQL_ENV_MYSQL_DATABASE=alphadatabase
|
|
# MYSQL_ENV_MYSQL_ADDRESS=alphaaddress
|
|
# GOOGLE_ANALYTICS_UID=alphauid
|
|
# SITE_TITLE=AlphaTitle
|
|
# SITE_ADDRESS=alpha.address.com
|
|
SITE_DESCRIPTION=alpha.description
|
|
|
|
|
|
## There might be a better way to do this now I'm working on something for configuring things more magically.
|
|
function set_conf() {
|
|
case $1 in
|
|
MYSQL_ENV_MYSQL_USER )
|
|
if [[ -z "$MYSQL_ENV_MYSQL_USER" ]]; then
|
|
echof info "User did not attempt to configure $MYSQL_ENV_MYSQL_USER"
|
|
else
|
|
echof info "Configuring $MYSQL_ENV_MYSQL_USER."
|
|
echof info "Setting '$MYSQL_ENV_MYSQL_USER' $MYSQL_ENV_MYSQL_USER in /app/config/mysqlConfig.json"
|
|
sed -i 's/"username": "root"/"username": "'$MYSQL_ENV_MYSQL_USER'"/' /app/config/mysqlConfig.json
|
|
fi
|
|
;;
|
|
MYSQL_ENV_MYSQL_PASSWORD )
|
|
if [[ -z "$MYSQL_ENV_MYSQL_PASSWORD" ]]; then
|
|
echof info "User did not attempt to configure $MYSQL_ENV_MYSQL_PASSWORD"
|
|
else
|
|
## This echo should be sanitized of any secrets before this is finished.
|
|
echof info "Setting '$MYSQL_ENV_MYSQL_PASSWORD' $MYSQL_ENV_MYSQL_PASSWORD in /app/config/mysqlConfig.json"
|
|
sed -i 's/"password": ""/"password": "'$MYSQL_ENV_MYSQL_PASSWORD'"/' /app/config/mysqlConfig.json
|
|
fi
|
|
;;
|
|
MYSQL_ENV_MYSQL_DATABASE )
|
|
if [[ -z "$MYSQL_ENV_MYSQL_DATABASE" ]]; then
|
|
echof info "User did not attempt to configure $MYSQL_ENV_MYSQL_DATABASE"
|
|
else
|
|
echof info "Setting '$MYSQL_ENV_MYSQL_DATABASE' $MYSQL_ENV_MYSQL_DATABASE in /app/config/mysqlConfig.json"
|
|
sed -i 's/"database": "lbry"/"database": "'$MYSQL_ENV_MYSQL_DATABASE'"/' /app/config/mysqlConfig.json
|
|
fi
|
|
;;
|
|
MYSQL_SERVER_ADDRESS )
|
|
if [[ -z "$MYSQL_SERVER_ADDRESS" ]]; then
|
|
echof info "User did not attempt to configure $MYSQL_SERVER_ADDRESS"
|
|
else
|
|
echof warn "This variable is not currently available."
|
|
fi
|
|
;;
|
|
SITE_ADDRESS )
|
|
if [[ -z "$SITE_ADDRESS" ]]; then
|
|
echof info "User did not attempt to configure $SITE_ADDRESS"
|
|
else
|
|
echof info "Setting '$SITE_ADDRESS' $SITE_ADDRESS in /app/config/siteConfig.json"
|
|
sed -i 's,"host": "https://www.example.com","host": "https://"$SITE_ADDRESS,' /app/config/siteConfig.json
|
|
fi
|
|
;;
|
|
GOOGLE_ANALYTICS_UID )
|
|
if [[ -z "$GOOGLE_ANALYTICS_UID" ]]; then
|
|
echof info "User did not attempt to configure $GOOGLE_ANALYTICS_UID"
|
|
else
|
|
echof info "Setting '$GOOGLE_ANALYTICS_UID' $GOOGLE_ANALYTICS_UID in /app/config/siteConfig.json"
|
|
sed -i 's/"googleId": null/"googleId": '$GOOGLE_ANALYTICS_UID'/' /app/config/siteConfig.json
|
|
fi
|
|
;;
|
|
SITE_TITLE )
|
|
if [[ -z "$SITE_TITLE" ]]; then
|
|
echof info "User did not attempt to configure $SITE_TITLE"
|
|
else
|
|
echof info "Setting '$SITE_TITLE' $SITE_TITLE in /app/config/siteConfig.json"
|
|
sed -i 's/"title": "My Site"/"title": "'$SITE_TITLE'"/' /app/config/siteConfig.json
|
|
fi
|
|
;;
|
|
SITE_DESCRIPTION )
|
|
if [[ -z "$SITE_DESCRIPTION" ]]; then
|
|
echof info "User did not attempt to configure $SITE_DESCRIPTION"
|
|
else
|
|
echof info "Setting '$SITE_DESCRIPTION' $SITE_DESCRIPTION in /app/config/siteConfig.json"
|
|
sed -i 's/"description": "A decentralized hosting platform built on LBRY"/"Description": "'$SITE_DESCRIPTION'"/' /app/config/siteConfig.json
|
|
fi
|
|
;;
|
|
esac
|
|
}
|
|
|
|
function configure_speech() {
|
|
# install configuration changes here.
|
|
echof info "Installing configuration files into /app/config/."
|
|
mkdir -p /app/config/
|
|
cp /usr/local/src/spee.ch/cli/defaults/mysqlConfig.json /app/config/mysqlConfig.json
|
|
cp /usr/local/src/spee.ch/cli/defaults/siteConfig.json /app/config/siteConfig.json
|
|
echof info "Installing any environment variables that have been set."
|
|
for i in "${ENVVARS[@]}"; do
|
|
if [[ -z "$i" ]]; then
|
|
echof info "$i was not set, moving on."
|
|
else
|
|
set_conf $i
|
|
fi
|
|
done
|
|
}
|
|
|
|
function final_permset() {
|
|
# ## Finally reassert permissions in case there is user added drift.
|
|
# rddo /app "test_for_dir" '775 "speech:speech"'
|
|
# rfdo /app "test_for_file" '665 "speech:speech"'
|
|
# ## Define any permission exceptions here.
|
|
# # test_for_dir /app/config 775 "speech:speech"
|
|
# # test_for_file /app/config/siteConfig.json 665 "speech:speech"
|
|
echof info "Copied Spee.ch and set permissions"
|
|
}
|
|
|
|
###################################
|
|
## Actual installation function. ##
|
|
###################################
|
|
# if Spee.ch is not yet installed, copy it into web root.
|
|
# This could be updated to be part of an upgrade mechanism.
|
|
if [ "$(ls -A /app)" ]; then
|
|
echof warn "/app is not Empty. It contains:" 1>&2
|
|
ls -A 1>&2
|
|
## If siteConfig.json isn't installed add it and configure or ignore and proceed.
|
|
if [ ! -e '/app/config/siteConfig.json' ]; then
|
|
echof warn "Spee.ch doesn't appear to have a configuration."
|
|
echof blank "Installing config"
|
|
configure_speech
|
|
else
|
|
## If the file exists skip configuration and proceed.
|
|
echof info "Spee.ch config already installed skipping configuration step."
|
|
final_permset
|
|
fi
|
|
## Install all other files after installing siteConfig.json
|
|
echof info "Making an attempt to nicely merge files using:"
|
|
echof run "mv -fnu /usr/local/src/spee.ch/* /app/"
|
|
mv -fnu /usr/local/src/spee.ch/* /app/
|
|
final_permset
|
|
else
|
|
echof info "Speech not installed, installing fresh copy now."
|
|
configure_speech
|
|
echof run "cp -r /usr/local/src/spee.ch/* /app/"
|
|
cp -r /usr/local/src/spee.ch/* /app/
|
|
final_permset
|
|
fi
|
|
|
|
## Superfluous permissions assertion maybe axe this later.
|
|
# echof run 'test_for_dir /app/config/siteConfig.json 775 "speech:speech"'
|
|
# test_for_file /app/config/siteConfig.json 775 "speech:speech"
|