【问题标题】:Kratos serve can't find the configuration fileKratos 服务找不到配置文件
【发布时间】:2021-07-28 13:56:08
【问题描述】:

设置

按照Ory Kratos Docker Documentation我运行:

$ docker pull oryd/kratos:v0.7.1-alpha.1
$ docker run --rm -it oryd/kratos version
Version:            v0.7.1-alpha.1
Build Commit:   4fe76af1302d45ddf4cf3c2c5949311c9cf1f8b8
Build Timestamp:    2021-07-22T17:41:40Z

在容器中运行镜像

这里发生的情况是没有指定配置文件,所以它只是错误地输出了所需的键。

$ docker run oryd/kratos:v0.7.1-alpha.1

The configuration contains values or keys which are invalid:
identity: <nil>
          ^-- one or more required properties are missing

The configuration contains values or keys which are invalid:
selfservice.default_browser_return_url: <nil>
                                        ^-- one or more required properties are missing

The configuration contains values or keys which are invalid:
courier.smtp.connection_uri: <nil>
                             ^-- one or more required properties are missing

time=2021-07-27T17:46:47Z level=fatal msg=Unable to instantiate configuration....

问题

使用 Docker 映像时,Kratos 无法识别带有 --config 标志的配置文件。

由于容器是独立运行的,我想在从守护进程运行 serve 命令时我必须在守护进程上使用一个文件,而且似乎 Ory Kratos 在Ory Kratos Docker Image 也有一个部分)

docker run --rm -it oryd/kratos serve --config /home/ory/kratos.yml

FATA[2021-07-27T18:35:41Z] Unable to instantiate configuration.          audience=application error=map[message:open /home/ory/kratos.yml: no such file or directory] service_name=Ory Kratos service_version=v0.7.1-alpha.1

相关文件:

configuration

【问题讨论】:

    标签: docker configuration


    【解决方案1】:

    消息:打开/home/ory/kratos.yml:没有这样的文件或目录

    上面的错误意味着容器找不到/home/ory/kratos.yml

    我想我必须在守护进程上使用一个文件

    如果我没听错,你的意思是你把kratos.yml放在了docker主机的rootfs中,但是你没有把它放在容器里,这会让你的容器找不到配置文件。

    所以,这里需要将host中的文件挂载到容器中,如下:

    docker run --rm -v /home/ory/kratos.yml:/home/ory/kratos.yml -it oryd/kratos serve --config /home/ory/kratos.yml
    

    你当然需要在主机上使用kratos.yml的正确路径。

    详情参考this

    【讨论】:

    • 你能成功运行docker命令吗?在构建图像并在分离模式下运行后,您能否向我展示您的输出?
    • 有没有办法将此文件从主机挂载到 Dockerfile 内的容器?
    • 我不知道kratos。但是使用您附加的配置文件,我使用下一个命令启动容器:docker run --rm -v pwd/kratos.yml:/home/ory/kratos.yml -it oryd/kratos serve --config /home/ory/kratos.yml,然后它不会打印no such file or directory,虽然它会输出其他类似Unable to connect to database, retrying.的东西,但我认为这是不再是 docker 问题,只是您如何正确使用 kratos。也许在您的环境中一切正常。
    • 要复制Dockerfile中的文件,您可以在Dockerfile中添加下一个:COPY kratos.yml /home/ory/kratos.yml
    猜你喜欢
    • 2018-01-17
    • 1970-01-01
    • 2016-12-09
    • 1970-01-01
    • 2015-09-27
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 2014-10-18
    相关资源
    最近更新 更多