У меня есть контейнер приложения 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 со скриптом