我遇到了Erlang 20的有线问题。
我使用rebar3 as prod tar
生成归档文件,我使用它来构建基于erlang:20.2-alpine
的泊坞窗图像。
在我的Macbook Pro上,可以拨打bin/app start
,但在目标泊坞广告容器上,它会告诉我:erts-9.2/bin/erlexec: line 1: syntax error: unexpected "("
我的Macbook Pro上的Erlang:
erl
Erlang/OTP 20 [erts-9.2] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]
Eshell V9.2 (abort with ^G)
目标容器上的Erlang:
erl
Erlang/OTP 20 [erts-9.2] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:10] [hipe] [kernel-poll:false]
Eshell V9.2 (abort with ^G)```
答案 0 :(得分:0)
我引用docker erlang,使用docker直接构建版本和目标图像。
答案 1 :(得分:0)
Tldr;将.dockerignore文件添加到项目中,该文件将忽略
_build
目录。
我今天有这个问题。就像评论中提到的@ steve-vinoski一样,这确实与我在容器中运行macOS输出有关,但就像@ yuanbo-han一样,我也在Dockerfile中构建发行版,所以我无法确定找出为什么它不起作用。
然后我意识到,我的Dockerfile中有一个COPY . .
指令,该指令从我的Mac中获取输出,因为我没有适当的.dockerignore。解决方案是将以下.dockerignore文件添加到项目的根目录:
_build/
.elixir_ls/
.git/
.vscode/
deps/
priv/static/
test/
.dockerignore
.env
.formatter.exs
.gitignore
.travis.yml
Dockerfile
README.md