Docker+Distillery场景:如何确定Elixir镜像的Alpine版本?
确定Elixir Alpine镜像的Alpine版本及版本不匹配问题
如何查询Elixir Alpine镜像的Alpine版本
方法1:本地临时容器验证
直接运行命令拉取镜像并输出Alpine版本:
docker run --rm elixir:1.7.2-alpine cat /etc/alpine-release
这条命令会直接返回镜像内置的Alpine版本号,比如你提到的elixir:1.7.2-alpine对应的就是3.8。
方法2:Docker Hub页面查看
在Elixir的Docker Hub页面中,进入对应标签(如1.7.2-alpine)的详情页:
- 部分镜像会在标签描述里直接标注基础Alpine版本;
- 若描述未提及,可查看该标签对应的Dockerfile内容,里面会明确写有
FROM alpine:x.x的语句,从而确认版本。
版本不匹配报错的原因
当你在Dockerfile中指定的ALPINE_VERSION与Elixir镜像实际使用的Alpine版本不一致时,Distillery打包的Erlang运行时会因为底层系统库(如musl libc)版本不兼容,触发Unusable Erlang runtime system! This is likely due to being compiled for another system than the host is running错误。Erlang编译高度依赖系统环境,跨Alpine版本(尤其是musl版本差异)会导致运行时无法兼容。
针对Elixir 1.13.4版本的处理建议
对于elixir:1.13.4-alpine镜像,同样可以用以下方式处理:
- 用命令确认Alpine版本:
docker run --rm elixir:1.13.4-alpine cat /etc/alpine-release - 将Dockerfile中的
ARG ALPINE_VERSION设置为上述命令返回的版本号,确保与Elixir镜像的基础系统版本一致,即可避免兼容性错误。
内容的提问来源于stack exchange,提问作者nonamorando
相关产品推荐
相关产品推荐

