2

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

rebar3 as prod tar用来生成一个存档文件,我用它来构建一个基于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)

目标容器上的 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)```
4

2 回答 2

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
于 2019-07-24T21:26:28.323 回答
0

我参考docker erlang,使用 docker 直接构建发布和目标镜像。

于 2017-12-24T18:09:19.103 回答