docker - 如何将配置文件推送到新的 oryd/hydra docker 镜像?
问题描述
我正在使用 oryd/hydra docker 镜像:https ://hub.docker.com/r/oryd/hydra 以使用我自己的配置构建自定义镜像。
我确实创建了一个自定义目录:
mkdir sso-demo-hydra
cd sso-demo-hydra
然后我使用该语法创建一个 Dockerfile:
vi Dockerfile
文件内容:
$ 猫 Dockerfile
来自 oryd/hydra:最新
复制.hydra /
构建图像时,我没有收到错误:
$ docker build -t sso-demo-hydra 。
将构建上下文发送到 Docker 守护进程 8.704kB
第 1/2 步:来自 oryd/hydra:最新
---> 50f0a70dbda9
第 2/2 步:复制 .hydra /
---> 使用缓存
---> 3539634979c0
构建成功 3539634979c0
成功标记 sso-demo-hydra:latest
安全警告:您正在针对非 Windows Docker 主机从 Windows 构建 Docker 映像。添加到构建上下文的所有文件和目录都将具有“-rwxr-xr-x”权限。建议仔细检查和重置敏感文件和目录的权限。
当我启动应用程序时,我收到以下警告:
sso 演示水螅 | 未找到配置文件,因为“[/]”中未找到“配置文件“.hydra”
PS:context目录下有个.hydra文件
谢谢你的支持。
解决方案
查看这个 docker 镜像的github 源代码,相关代码如下:
func initConfig() {
if cfgFile != "" {
// enable ability to specify config file via flag
viper.SetConfigFile(cfgFile)
} else {
path := absPathify("$HOME")
if _, err := os.Stat(filepath.Join(path, ".hydra.yml")); err != nil {
_, _ = os.Create(filepath.Join(path, ".hydra.yml"))
}
viper.SetConfigType("yaml")
viper.SetConfigName(".hydra") // name of config file (without extension)
viper.AddConfigPath("$HOME") // adding home directory as first search path
}
viper.SetDefault("LOG_LEVEL", "info")
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
viper.AutomaticEnv() // read in environment variables that match
// If a config file is found, read it in.
if err := viper.ReadInConfig(); err != nil {
fmt.Printf(`Config file not found because "%s"`, err)
fmt.Println("")
}
}
从上面,您实际上可以看到它所期望的是,.hydra.yml
而不是只是删除扩展名的那个:.hydra
.hydra
viper.SetConfigName(".hydra") // 配置文件的名称(不带扩展名)
所以根本原因是:它的错误提示不友好,让你遇到问题,改用.hydra.yml
就可以了。
推荐阅读
- php - url解码和发布数据后出错
- r - 使用自定义函数对 data.table 中的子集使用 mapply
- ios - 如何在swift中按下按钮时从另一个xib文件加载另一个xib文件
- php - 如何通过 PHP 读取特定的 json
- google-cloud-platform - 在谷歌深度学习虚拟机中安装 pip
- ballerina - Ballerina 数据库读取不会引发编译器错误
- jquery - 使用 daterangepicker 获取本月的最后一天
- php - 结合验证日期和未验证数据存储在 laravel 中
- node.js - 如何构建 NodeJs 代码
- node.js - 如何在nodejs中使用'select if'函数和sequelize