Docker Entrypoint

docker-entrypoint.sh 模板

官方示例

示例代码

#!/bin/sh

set -eo pipefail
shopt -s nullglob

# ------------------
echo do something
# ------------------

echo "start exec '$@'"
exec "$@"

含义

set -e

  • 如果任何语句支持结果不是 0(出错),则应该退出
  • 如果要增加可读性, 可以使用 set -o errexit

set -o pipefail

  • set -e 类似,作用域是管道
  • 脚本中的管道,如果前面的命令执行出了问题, 应该立即退出
  • 可与 set -e 结合 set -eo pipefail
  • set -o 查看所有可设置的选项

shopt -s nullglob

  • 在使用 Linux 中的通配符时 * ? 时,没有匹配到时执行去掉通配符的内容,如 在空文件夹下 执行 echo /tmp/123/*
    • 未设置时输出 输出 /tmp/123/*
    • 设置后输出 空字符串
  • shopt -p 列出所有可设置的选项

exec “$@”

  • 在执行完 docker-entrypoint.sh 的内容后,执行用户自定义脚本

其他

巨人的肩膀