You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker执行rebar3 new escript报错:无法加载inets依赖

解决Rebar3无法加载inets依赖的问题

问题根源

你使用的elixir:1.14镜像中,Erlang环境是通过asdf安装的精简版本,系统包管理工具(如apt)安装的erlang-inets属于系统自带的Erlang,和镜像中实际使用的Erlang不属于同一环境,因此安装后无法生效。

解决方案

方案1:切换到包含完整Erlang的基础镜像

改用官方完整Erlang镜像作为基础,再安装Elixir,确保Erlang包含所有标准库模块:

# 使用兼容Elixir 1.14的完整Erlang OTP 25镜像
FROM docker.io/erlang:25-alpine

# 安装Elixir
RUN apk add --no-cache elixir

# 初始化Mix和Rebar3
RUN mix local.hex --force
RUN mix local.rebar --force

# 复制构建产物
COPY --from=builder /app/_build/prod/rel/example /release/example

ENTRYPOINT [ "/release/example/bin/example" ]

方案2:在现有镜像中补全Erlang标准库

如果不想切换镜像,可以卸载现有精简版Erlang,改用系统包安装完整版本:

FROM docker.io/elixir:1.14

# 卸载asdf安装的Erlang,安装系统完整Erlang包
RUN apt-get update && apt-get install -y --no-install-recommends erlang-full \
    && rm -rf /var/lib/apt/lists/* \
    && rm -rf /usr/local/asdf \
    && ln -s /usr/bin/erl /usr/local/bin/erl

# 初始化Mix和Rebar3
RUN mix local.hex --force
RUN mix local.rebar --force

# 复制构建产物
COPY --from=builder /app/_build/prod/rel/example /release/example

ENTRYPOINT [ "/release/example/bin/example" ]

方案3:修正builder阶段的环境配置

如果错误是在builder阶段执行rebar3 new escript时出现的,需确保builder镜像的Erlang环境包含inets:

# builder阶段
FROM docker.io/elixir:1.14 as builder

# 安装Erlang标准库依赖
RUN apt-get update && apt-get install -y --no-install-recommends erlang-inets erlang-dev \
    && rm -rf /var/lib/apt/lists/*

# 执行rebar3脚本创建命令
RUN rebar3 new escript my_script

# 后续构建步骤...

验证方法

容器启动后,进入容器执行以下命令,确认inets模块可用:

erl -s inets start -s init stop

无报错则说明inets模块已正常加载。

内容的提问来源于stack exchange,提问作者MePP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:30:10