Erlang 20.2 的语法错误

Yua*_*Han 2 erlang rebar3

我遇到了 Erlang 20 的有线问题。

rebar3 as prod tar用来生成一个存档文件,我用它来构建一个基于 .docker 的 docker 镜像erlang:20.2-alpine

在我的 Macbook Pro 上,可以调用,bin/app start但在目标 docker 容器上,它告诉我: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)
Run Code Online (Sandbox Code Playgroud)

目标容器上的 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)```
Run Code Online (Sandbox Code Playgroud)

Gro*_*Src 8

网址; 将 .dockerignore 文件添加到忽略_build目录的项目中 。

我今天遇到了这个问题。就像评论中提到的@steve-vinoski 一样,它确实与我在容器中运行 macOS 输出的事实有关,但像 @yuanbo-han 一样,我也在 Dockerfile 中构建版本,所以我无法弄清楚找出它不工作的原因。

然后我意识到,COPY . .我的 Dockerfile 中有一个指令从我的 mac 获取输出,因为我没有 .dockerignore 到位。解决方案是将以下 .dockerignore 文件添加到项目的根目录:

_build/
.elixir_ls/
.git/
.vscode/
deps/
priv/static/
test/
.dockerignore
.env
.formatter.exs
.gitignore
.travis.yml
Dockerfile
README.md
Run Code Online (Sandbox Code Playgroud)