我需要执行一个包含sql的bash脚本,所以我使用脚本将自定义配置添加到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
然后使用变量set运行它:
$MY_EXTENSION=something ./test.sh
something
在Docker中你需要ENV MY_EXTENSION =你的Dockerfile或docker中的东西运行-e MY_EXTENSION = something< image>在您的命令行上,以设置环境.