Синтаксическая ошибка: EOF в подстановке обратной цитаты в образе докера - PullRequest
0 голосов
/ 29 сентября 2019

Я использую файл startup.sh внутри моего образа докера.dockerfile запускает этот файл сам.Я использую этот сценарий для установки и создания базы данных, а также для редактирования пользователей и прав доступа.

Поскольку я не знаком с Bash и получаю error Syntax error: EOF in backquote substitution.

Кто-нибудьне возражаете бросить быстрый взгляд?

большое спасибо

#!/bin/sh

MYSQL_ROOT_PWD=${MYSQL_ROOT_PWD:-"mysql"}
MYSQL_USER=${MYSQL_USER:-""}
MYSQL_USER_PWD=${MYSQL_USER_PWD:-""}
MYSQL_USER_DB=${MYSQL_USER_DB:-""}

if [ ! -d "/run/mysqld" ]; then
    mkdir -p /run/mysqld
    chown -R mysql:mysql /run/mysqld
fi

if [ -d /var/lib/mysql/mysql ]; then
    echo '[i] MySQL directory already present, skipping creation'
else
    echo "[i] MySQL data directory not found, creating initial DBs"

    chown -R mysql:mysql /var/lib/mysql

    echo 'Initializing database'
    mysql_install_db --user=mysql > /dev/null
    echo 'Database initialized'

    echo "[i] MySql root password: $MYSQL_ROOT_PWD"

    tfile=`mktemp`
    if [ ! -f "$tfile" ]; then
        return 1
    fi

    echo "[i] Create temp file: $tfile"
    cat << EOF > $tfile
USE mysql;
FLUSH PRIVILEGES;
DELETE FROM mysql.user;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PWD' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '$MYSQL_ROOT_PWD' WITH GRANT OPTION;
EOF

    if [ "$MYSQL_USER_DB" != "" ]; then
        echo "[i] Creating database: $MYSQL_USER_DB"
        echo "CREATE DATABASE IF NOT EXISTS \`$MYSQL_USER_DB\` CHARACTER SET utf8 COLLATE utf8_general_ci;" >> $tfile

        if [ "$MYSQL_USER" != "" ] && [ "$MYSQL_USER_PWD" != "" ]; then
        echo "[i] Creating user: $MYSQL_USER with password $MYSQL_USER_PWD"
        echo "GRANT ALL ON \`$MYSQL_USER_DB\`.* to '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_USER_PWD';" >> $tfile
        fi
    else
        if [ "$MYSQL_USER" != "" ] && [ "$MYSQL_USER_PWD" != "" ]; then
        echo "[i] Creating user: $MYSQL_USER with password $MYSQL_USER_PWD"
        echo "GRANT ALL ON *.* to '$MYSQL_USER'@'%' IDENTIFIED BY '$MYSQL_USER_PWD';" >> $tfile
        fi
    fi

    echo 'FLUSH PRIVILEGES;' >> $tfile

    echo "[i] run tempfile: $tfile"
    /usr/bin/mysqld --user=mysql --bootstrap --verbose=0 < $tfile
    rm -f $tfile
fi
...