我遇到了 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)
网址; 将 .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)