I am using the oryd/hydra docker image: https://hub.docker.com/r/oryd/hydra in order to build a custom image with my own configuration.
I did create a custom directory:
mkdir sso-demo-hydra
cd sso-demo-hydra
then I create a Dockerfile using that syntax:
vi Dockerfile
the file content:
$ cat Dockerfile
FROM oryd/hydra:latest
COPY .hydra /
when building the image I get no error:
$ docker build -t sso-demo-hydra .
Sending build context to Docker daemon 8.704kB
Step 1/2 : FROM oryd/hydra:latest
---> 50f0a70dbda9
Step 2/2 : COPY .hydra /
---> Using cache
---> 3539634979c0
Successfully built 3539634979c0
Successfully tagged sso-demo-hydra:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.
And when I launch the application I get the following warning:
sso-demo-hydra | Config file not found because "Config File ".hydra" Not Found in "[/]""
PS: there is a .hydra file in the context directory
Thanks for your support.
See github source code of this docker image, the related code is as next:
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("")
}
}
From above, you can see in fact what it expected is .hydra.yml
, not .hydra
, .hydra
just the one which remove extension:
viper.SetConfigName(".hydra") // name of config file (without extension)
So the root cause is: its error indication not friendly which make you encountered problem, change to use .hydra.yml
could make it ok.