docker точка входа показывает информацию консоли через браузер - PullRequest
0 голосов
/ 09 мая 2020

У меня есть контейнер приложения apache. Моя docker точка входа выглядит примерно так:

#!/bin/bash
set -euo pipefail
declare MOODLE_DATA=/var/www/moodledata

# install only if executed without CMD parameter

if [[ "$1" == apache2* ]] || [ "$1" == php-fpm ]; then

    if [ ! -e config.php ]; then
      # COPY LOCAL CODE FROM /usr/local/code
    else
        echo >&2 "MOODLE CODE FOUND: SKIP CREATION"
    fi

    # database

    echo "Checking database status..."
    #wait till is ready for connections
    dockerize -wait tcp://db:3306 -timeout 20s
    # prevent container exit by php return value
    set +e
    php /var/www/html/admin/cli/check_database_schema.php
    dbStatus=$?
    if [ $dbStatus  -eq 2 ]; then
        echo >&2 "CREATING DATABASE...."
        # som code 
        echo >&2 "DATABASE CREATED"
    elif [ $dbStatus -eq 0 ]; then
        echo >&2 "DATABASE FOUND: SKIP CREATION"
    else
        echo >&2 "Could not install Database due to errors!"
    fi

    echo >&2 "Starting web server..."
fi

exec "$@"

Выполнение занимает довольно много времени, около 5 минут, поэтому я хотел бы показать нашим пользователям некоторую информацию о процессе установки.

Есть ли способ выводить эхо не только на консоль, но и в файл html? Любой сценарий, команда для упрощения?

Моя идея состояла бы в том, чтобы иметь шаблон html, подобный приведенному ниже, вставлять текст в тело и автоматически обновлять sh каждые 5 ':

<html>
    <head>
        <title>Show installation</title>
        <meta http-equiv="refresh" content="5" >
    </head>
    <body>

    </body>
</html>

Однако я запускаю веб-сервер только в конце exe c "$ @". Как я мог это исправить? Если я запустил его перед остальной частью скрипта, он не будет go со скриптом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...