
该Docker镜像提供了开箱即可在Docker中运行Phoenix应用所需的一切。它基于alpine-erlang镜像构建,安装了Elixir(1.11.0)、Node.js(12.18.x)、Hex和Rebar,能够在构建过程中处理Node和Elixir依赖的编译。
/opt/app并全局可读写该镜像设计用于非特权环境,默认主目录为/opt/app。建议在Dockerfile末尾添加USER default指令,使应用在非特权用户 context 下运行。
通过以下命令直接启动镜像并进入Elixir交互环境:
bashdocker run --rm -it --user=1000001 bitwalker/alpine-elixir-phoenix iex
运行后将进入Elixir交互终端:
Erlang/OTP 23 [erts-11.1.1] [source] [64-bit] [smp:3:3] [ds:3:3:10] [async-threads:1] Interactive Elixir (1.11.0) - press Ctrl+C to exit (type h() ENTER for help) iex(1)>
创建自定义Dockerfile扩展此镜像:
dockerfileFROM bitwalker/alpine-elixir-phoenix:latest # 设置暴露端口 EXPOSE 5000 ENV PORT=5000 MIX_ENV=prod # 缓存Elixir依赖 ADD mix.exs mix.lock ./ RUN mix do deps.get, deps.compile # 缓存Node.js依赖 ADD assets/package.json assets/ RUN cd assets && npm install ADD . . # 构建前端资源、编译应用并生成静态资源摘要 RUN cd assets/ && \ npm run deploy && \ cd - && \ mix do compile, phx.digest USER default CMD ["mix", "phx.server"]
构建镜像时,建议在项目根目录创建.dockerignore文件,包含以下内容:
_build deps assets/node_modules test
这将减小镜像体积并避免依赖编译问题。
可结合多阶段构建和bitwalker/alpine-elixir镜像显著减小最终镜像体积:
dockerfileFROM bitwalker/alpine-elixir-phoenix:latest AS phx-builder # 设置环境变量 ENV MIX_ENV=prod # 缓存Elixir依赖 ADD mix.exs mix.lock ./ RUN mix do deps.get, deps.compile # 缓存Node.js依赖 ADD assets/package.json assets/ RUN cd assets && npm install ADD . . # 构建前端资源、编译应用并生成静态资源摘要 RUN cd assets/ && \ npm run deploy && \ cd - && \ mix do compile, phx.digest FROM bitwalker/alpine-elixir:latest EXPOSE 5000 ENV PORT=5000 MIX_ENV=prod # 从构建阶段复制必要文件 COPY --from=phx-builder /opt/app/_build /opt/app/_build COPY --from=phx-builder /opt/app/priv /opt/app/priv COPY --from=phx-builder /opt/app/config /opt/app/config COPY --from=phx-builder /opt/app/lib /opt/app/lib COPY --from=phx-builder /opt/app/deps /opt/app/deps COPY --from=phx-builder /opt/app/.mix /opt/app/.mix COPY --from=phx-builder /opt/app/mix.* /opt/app/ # 或者复制整个目录(注意:这会包含非构建文件) # COPY --from=phx-builder /opt/app /opt/app USER default CMD ["mix", "phx.server"]
MIT
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务