Fixed bootstrap for non-https case.

This commit is contained in:
Shuai Lin 2016-11-25 14:14:30 +08:00
parent 63dd4b5c19
commit b2e7e7f499
3 changed files with 48 additions and 29 deletions

View file

@ -38,6 +38,14 @@ dbg() {
fi fi
} }
show_progress() {
if [[ -t 1 ]]; then
>&2 printf "[$(date +'%Y-%m-%d %H:%M:%S')] \033[32m%s\033[m\n" "$1"
else
>&2 echo "[$(date +'%Y-%m-%d %H:%M:%S')] " "$1"
fi
}
install_docker() { install_docker() {
echo "---------------------------------------------------------------------------------" echo "---------------------------------------------------------------------------------"
echo "Docker is not installed, you will need to install Docker in order to run Launcher" echo "Docker is not installed, you will need to install Docker in order to run Launcher"
@ -47,7 +55,11 @@ install_docker() {
} }
err_and_quit () { err_and_quit () {
printf "\n\n\033[33mError: %s\033[m\n\n" "$1" if [[ -t 1 ]]; then
>&2 printf "\n\n\033[33mError: %s\033[m\n\n" "$1"
else
>&2 echo "$1"
fi
exit 1 exit 1
} }
@ -125,19 +137,21 @@ bootstrap() {
docker run $user_args --rm -it --name seafile-bootstrap -e SEAFILE_BOOTSRAP=1 $volumes $ports $image /sbin/my_init -- /scripts/bootstrap.py docker run $user_args --rm -it --name seafile-bootstrap -e SEAFILE_BOOTSRAP=1 $volumes $ports $image /sbin/my_init -- /scripts/bootstrap.py
docker build -f bootstrap/generated/Dockerfile -t local_seafile/server:latest . show_progress "Now building the local docker image."
docker build -f bootstrap/generated/Dockerfile -t local_seafile/server:latest . >/dev/null
show_progress "Image built."
} }
start() { start() {
existing=$(docker ps | awk '{ print $1, $(NF) }' | grep " seafile$" | awk '{ print $1 }' || true) existing=$(docker ps | awk '{ print $1, $(NF) }' | grep " seafile$" | awk '{ print $1 }' || true)
if [[ $existing != "" ]]; then if [[ $existing != "" ]]; then
echo "Nothing to do, your container has already started!" show_progress "Nothing to do, your container has already started!"
exit 0 exit 0
fi fi
set_existing_container set_existing_container
if [[ $existing != "" ]]; then if [[ $existing != "" ]]; then
echo "starting up existing container" show_progress "starting up existing container"
( (
set -x set -x
docker start seafile docker start seafile
@ -156,6 +170,7 @@ start() {
attach_on_run="-d" attach_on_run="-d"
fi fi
show_progress "Starting up new seafile server container"
( (
set -x set -x
docker run $user_args $attach_on_run $restart_policy --name seafile -h seafile $volumes $ports $local_image docker run $user_args $attach_on_run $restart_policy --name seafile -h seafile $volumes $ports $local_image
@ -170,8 +185,7 @@ stop() {
docker stop -t 10 seafile docker stop -t 10 seafile
) )
else else
echo "seafile was not started !" err_and_quit "seafile was not started !"
exit 1
fi fi
} }
@ -183,8 +197,7 @@ enter() {
docker exec -it seafile /bin/bash docker exec -it seafile /bin/bash
) )
else else
echo "seafile was not started !" err_and_quit "seafile was not started !"
exit 1
fi fi
} }
@ -215,7 +228,7 @@ destroy() {
rebuild() { rebuild() {
if [[ "$(git symbolic-ref --short HEAD)" == "master" ]]; then if [[ "$(git symbolic-ref --short HEAD)" == "master" ]]; then
echo "Ensuring launcher is up to date" show_progress "Ensuring launcher is up to date"
git remote update git remote update
@ -224,10 +237,10 @@ rebuild() {
BASE=$(git merge-base @ "@{u}") BASE=$(git merge-base @ "@{u}")
if [[ $LOCAL = "$REMOTE" ]]; then if [[ $LOCAL = "$REMOTE" ]]; then
echo "Launcher is up-to-date" show_progress "Launcher is up-to-date"
elif [[ $LOCAL = "$BASE" ]]; then elif [[ $LOCAL = "$BASE" ]]; then
echo "Updating Launcher" show_progress "Updating Launcher"
git pull || (echo 'failed to update' && exit 1) git pull || (echo 'failed to update' && exit 1)
for (( i=${#BASH_ARGV[@]}-1,j=0; i>=0,j<${#BASH_ARGV[@]}; i--,j++ )) for (( i=${#BASH_ARGV[@]}-1,j=0; i>=0,j<${#BASH_ARGV[@]}; i--,j++ ))
@ -237,9 +250,9 @@ rebuild() {
exec /bin/bash $0 "${args[@]}" # $@ is empty, because of shift at the beginning. Use BASH_ARGV instead. exec /bin/bash $0 "${args[@]}" # $@ is empty, because of shift at the beginning. Use BASH_ARGV instead.
elif [[ $REMOTE = "$BASE" ]]; then elif [[ $REMOTE = "$BASE" ]]; then
echo "Your version of Launcher is ahead of origin" show_progress "Your version of Launcher is ahead of origin"
else else
echo "Launcher has diverged source, this is only expected in Dev mode" show_progress "Launcher has diverged source, this is only expected in Dev mode"
fi fi
fi fi
@ -247,7 +260,7 @@ rebuild() {
set_existing_container set_existing_container
if [[ $existing != "" ]]; then if [[ $existing != "" ]]; then
echo "Stopping old container" show_progress "Stopping old container"
( (
set -x set -x
docker stop -t 10 seafile docker stop -t 10 seafile
@ -255,9 +268,10 @@ rebuild() {
fi fi
bootstrap bootstrap
show_progress "Rebuilt successfullly."
if [[ $existing != "" ]]; then if [[ $existing != "" ]]; then
echo "Removing old container" show_progress "Removing old container"
( (
set -x set -x
docker rm seafile docker rm seafile
@ -265,6 +279,8 @@ rebuild() {
fi fi
start start
show_progress "Your seafile server is now running."
exit 0 exit 0
} }

View file

@ -48,17 +48,6 @@ def init_letsencrypt():
# time.sleep(1000) # time.sleep(1000)
# sys.exit(1) # sys.exit(1)
# Now create the final nginx configuratin
context = {
'https': True,
'domain': domain,
}
render_template(
'/templates/seafile.nginx.conf.template',
join(generated_dir, 'seafile.nginx.conf'),
context
)
context = { context = {
'ssl_dir': ssl_dir, 'ssl_dir': ssl_dir,
'domain': domain, 'domain': domain,
@ -69,6 +58,20 @@ def init_letsencrypt():
context context
) )
def generate_local_nginx_conf():
# Now create the final nginx configuratin
domain = get_conf('server.hostname')
context = {
'https': is_https(),
'domain': domain,
}
render_template(
'/templates/seafile.nginx.conf.template',
join(generated_dir, 'seafile.nginx.conf'),
context
)
def is_https(): def is_https():
return get_conf('server.letsencrypt', '').lower() == 'true' return get_conf('server.letsencrypt', '').lower() == 'true'
@ -142,10 +145,11 @@ def main():
if is_https(): if is_https():
init_letsencrypt() init_letsencrypt()
generate_local_nginx_conf()
init_seafile_server() init_seafile_server()
show_progress('bootstrap done.') show_progress('Generated local config.')
if __name__ == '__main__': if __name__ == '__main__':

View file

@ -238,6 +238,5 @@ def render_template(template, target, context):
fp.write(content) fp.write(content)
def show_progress(msg): def show_progress(msg):
eprint('---------------------') msg = '[{}] {}'.format(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), green(msg))
eprint(msg) eprint(msg)
eprint('---------------------')