Я сейчас пишу на своем docker -входном пункте. sh скрипт. Скрипт определяет service_type, который является env. переменная, в зависимости от возвращаемого значения, фактический запуск приложения будет отличаться.
в операторе if У меня есть несколько команд, чтобы проверить, готов ли ландшафт для использования. Я также использую Python здесь, но всегда сталкиваюсь с следующей проблемой:
/ usr / local / bin / docker -entrypoint. sh: строка 128: предупреждение: здесь- документ в строке 30, разделенный концом файла (требуется `EOF ')
/ usr / local / bin / docker -entrypoint. sh: строка 129: синтаксическая ошибка: неожиданный конец файла
docker -entrypoint. sh:
#!/usr/bin/env bash
############### App ###############
if [ "$SERVICE_TYPE" = "app" ]
then
echo "I'm a Application instance, Hello World!"
...
echo "Checking if System User is setup"
{
python manage.py shell <<-EOF
from django.contrib.auth import get_user_model
User = get_user_model() # get the currently active user model
User.objects.filter(user='$SYS_USER').exists() or User.objects.create_superuser('$SYS_USER', '$SYS_USER')
EOF
}
...
############### Celery Worker ###############
elif [ "$SERVICE_TYPE" = "celery-worker" ]
then
echo "I'm a Celery Worker instance, Hello World!"
...
############### Celery Beat ##################
elif [ "$SERVICE_TYPE" = "celery-beat" ]
then
echo "I'm a Celery Beat instance, Hello World!"
...
fi
Как я могу выполнить мой python shell cmd в операторе if, чтобы я в основном имел тот же результат как если бы я не использовал его в операторе if:
echo "Checking if System User is setup"
{
cat <<EOF | python manage.py shell
from django.contrib.auth import get_user_model
User = get_user_model() # get the currently active user model
User.objects.filter(user='$SYS_USER').exists() or User.objects.create_superuser('$SYS_USER', '$SYS_USER')
EOF
}