依赖在编译期间看不到它的配置
Dependency cannot see its config during compilation
我正在尝试将应用程序打包到 docker 容器中。它依赖于 authable
十六进制包。
当运行:
docker build --tag "testing:0.1" --file Dockerfile .
...我得到以下编译错误:
== Compilation error on file lib/authable/repo.ex ==
** (ArgumentError) missing :adapter configuration in config :authable, Authable.Repo
lib/ecto/repo/supervisor.ex:50: Ecto.Repo.Supervisor.compile_config/2
lib/authable/repo.ex:6: (module)
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
could not compile dependency :authable, "mix compile" failed. You can recompile this dependency with "mix deps.compile authable", update it with "mix deps.update authable" or clean it with "mix deps.clean authable"
该错误表明 Authable 在编译期间无法读取和初始化其 repo
配置:
我觉得我遗漏了一些简单的东西,但我无法弄清楚它是什么。
这里有一个重现问题的简单回购 – https://github.com/gmile/test_authable_docker.
更新。明确表示错误仅在 docker 期间编译时发生(例如,在主机 macOS 上编译时一切正常)。
这里的问题是您的 Dockerfile,在尝试 运行 mix deps.compile
.
时 config/config.exs
尚不可用
原始 Dockerfile 内容:
# Install and compile project dependencies
COPY mix.* ./
RUN mix deps.get
RUN mix deps.compile
RUN mix ecto.create
RUN mix ecto.migrate -r Authable.Repo
# Add project sources
COPY . .
将此更改为在执行 mix compile
之前复制源可解决此问题:
....
RUN mix deps.get
# Add project sources
COPY . .
RUN mix deps.compile
...
我正在尝试将应用程序打包到 docker 容器中。它依赖于 authable
十六进制包。
当运行:
docker build --tag "testing:0.1" --file Dockerfile .
...我得到以下编译错误:
== Compilation error on file lib/authable/repo.ex ==
** (ArgumentError) missing :adapter configuration in config :authable, Authable.Repo
lib/ecto/repo/supervisor.ex:50: Ecto.Repo.Supervisor.compile_config/2
lib/authable/repo.ex:6: (module)
(stdlib) erl_eval.erl:670: :erl_eval.do_apply/6
could not compile dependency :authable, "mix compile" failed. You can recompile this dependency with "mix deps.compile authable", update it with "mix deps.update authable" or clean it with "mix deps.clean authable"
该错误表明 Authable 在编译期间无法读取和初始化其 repo
配置:
我觉得我遗漏了一些简单的东西,但我无法弄清楚它是什么。
这里有一个重现问题的简单回购 – https://github.com/gmile/test_authable_docker.
更新。明确表示错误仅在 docker 期间编译时发生(例如,在主机 macOS 上编译时一切正常)。
这里的问题是您的 Dockerfile,在尝试 运行 mix deps.compile
.
config/config.exs
尚不可用
原始 Dockerfile 内容:
# Install and compile project dependencies
COPY mix.* ./
RUN mix deps.get
RUN mix deps.compile
RUN mix ecto.create
RUN mix ecto.migrate -r Authable.Repo
# Add project sources
COPY . .
将此更改为在执行 mix compile
之前复制源可解决此问题:
....
RUN mix deps.get
# Add project sources
COPY . .
RUN mix deps.compile
...