Intereting Posts
Результаты Docker Push в ошибке Создайте изображение докеров из локального, а не git clone Как игнорировать папку uploads, чтобы остановить удаление контента на сервере докеров при создании новой сборки Несколько изображений докеров из SBT Как установить переменные среды docker по умолчанию Проблемы с автоматизацией контейнеров-докеров с laravel Как изменить громкость jenkins на докере kitematic сборка докеров в режиме выполнения или докеры из изображений Запуск «eb local run» в качестве фонового процесса из сценария bash не выполняется с различными ошибками (описанными) Файл sql-сервера Postgres, похоже, не завершен Отправлять письма из контейнера redmine Запуск оконных контейнеров и Linux с одним и тем же клиентом докеров Шифрование данных Docker Data Container Скрутите неиспользуемые контейнеры Dokku (и запустите их при доступе) Docker строит «нет такого файла или каталога», но работает с docker-compose

Что такое блок кода «<< – EOSQL» в Bash при запуске SQL?

Мне нужно выполнить скрипт bash, содержащий SQL, поэтому я использую скрипт для добавления настраиваемых конфигураций в контейнер Postgres Docker, в соответствии с документами здесь:

https://github.com/docker-library/docs/tree/master/postgres#how-to-extend-this-image

Но я не знаю, что означает EOSQL . Вот пример моего сценария, взятого из документов выше:

 #!/bin/bash set -e psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL CREATE USER docker; CREATE DATABASE docker; GRANT ALL PRIVILEGES ON DATABASE docker TO docker; CREATE EXTENSION $MY_EXTENSION; EOSQL 

Итак, что такое EOSQL? Я не могу найти много информации об этой команде или ключевом слове.

EOSQL – это предельная строка для блока Bash Here Document . Предельная строка может быть любым текстом, который не отображается в вашем блоке. Это означает начало и конец текстового блока.

Переменная замещения будет работать как обычно в документе:

 #!/usr/bin/env bash cat <<-EOF $MY_EXTENSION EOF 

Затем запустите это с помощью переменной:

 $ MY_EXTENSION=something ./test.sh something 

В Docker вам понадобится ENV MY_EXTENSION=something в вашем Dockerfile или docker run -e MY_EXTENSION=something <image> в командной строке для среды, которая будет настроена.