我正在使用oryd / hydra泊坞镜像:https://hub.docker.com/r/oryd/hydra 为了使用我自己的配置构建自定义图片。
我确实创建了一个自定义目录:
mkdir sso-demo-hydra
cd sso-demo-hydra
然后我使用该语法创建一个Dockerfile:
vi Dockerfile
文件内容:
$ cat Dockerfile
FROM oryd / hydra:latest
COPY .hydra /
建立图片时我没有错误:
$ docker build -t sso-demo-hydra。
将构建上下文发送到Docker守护程序8.704kB
第1/2步:从oryd / hydra:latest
---> 50f0a70dbda9
第2/2步:COPY .hydra /
--->使用缓存
---> 3539634979c0
成功构建了3539634979c0
成功标记了sso-demo-hydra:latest
安全警告:您正在针对非Windows Docker主机从Windows构建Docker映像。添加到构建上下文的所有文件和目录都将具有“ -rwxr-xr-x”权限。建议仔细检查并重置敏感文件和目录的权限。
启动应用程序时,出现以下警告:
sso-demo-hydra |找不到配置文件,因为在“ [/]”中找不到“ Config File“ .hydra””
PS:上下文目录中有一个.hydra文件
感谢您的支持。
答案 0 :(得分:1)
请参见此docker映像的github source code,相关代码如下:
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
可以使其正常。
答案 1 :(得分:0)
在这种情况下,我建议您在启动Docker容器时传递配置文件(--config)。例如:
docker run -d \
--name ory-hydra-example--hydra \
--network hydraguide \
-p 9000:4444 \
-p 9001:4445 \
-e SECRETS_SYSTEM=$SECRETS_SYSTEM \
-e DSN=$DSN \
-e URLS_SELF_ISSUER=http://127.0.0.1:9000 \
-e URLS_CONSENT=http://127.0.0.1:9020/consent \
-e URLS_LOGIN=http://127.0.0.1:9020/login \
-v $(pwd)/hydra.yaml:/hydra.yaml \
oryd/hydra:v1.8.5 serve all --config hydra.yaml --dangerous-force-http
这样,您无需创建自己的dockerfile。