erl_crash 在步骤 mix deps.get 的 docker 构建过程中

问题描述 投票:0回答:1

在 Elixir 应用程序的 docker 构建过程中遇到问题

└> docker build -t octopus_engine:1.0.0 .
[+] Building 24.2s (12/12) FINISHED                                                              docker:desktop-linux
 => [internal] load build definition from Dockerfile                                                             0.0s
 => => transferring dockerfile: 429B                                                                             0.0s
 => [internal] load metadata for docker.io/library/elixir:1.16-alpine                                            2.6s
 => [auth] library/elixir:pull token for registry-1.docker.io                                                    0.0s
 => [internal] load .dockerignore                                                                                0.0s
 => => transferring context: 2B                                                                                  0.0s
 => [internal] load build context                                                                                0.2s
 => => transferring context: 23.02MB                                                                             0.2s
 => [1/7] FROM docker.io/library/elixir:1.16-alpine@sha256:a048fc41bd57ea566d4a6b985d7fc4529508a3c8cea12a9a10c  16.3s
 => => resolve docker.io/library/elixir:1.16-alpine@sha256:a048fc41bd57ea566d4a6b985d7fc4529508a3c8cea12a9a10c6  0.0s
 => => sha256:a048fc41bd57ea566d4a6b985d7fc4529508a3c8cea12a9a10c6fb0e6f563cc4 7.39kB / 7.39kB                   0.0s
 => => sha256:ffecf4d1038498a3c09a74444f73b15f77694631b3e26027fd23505e424db0aa 1.54kB / 1.54kB                   0.0s
 => => sha256:b79a31843cd6a0c6fd36cce750a676e3b9027b8d158feb12249041b85e905dab 5.50kB / 5.50kB                   0.0s
 => => sha256:bca4290a96390d7a6fc6f2f9929370d06f8dfcacba591c76e3d5c5044e7f420c 3.35MB / 3.35MB                   1.4s
 => => sha256:e5d176ad137694ea02867cbdc69b11fdff3a8aa1e4ac2e369aaad0c36e0a3ea4 45.59MB / 45.59MB                15.7s
 => => sha256:89381e95753af9e4fb0f75d0d6f25329abccb6a68314fe7eda4d894cd0bd1bb4 6.76MB / 6.76MB                   6.8s
 => => extracting sha256:bca4290a96390d7a6fc6f2f9929370d06f8dfcacba591c76e3d5c5044e7f420c                        0.1s
 => => extracting sha256:e5d176ad137694ea02867cbdc69b11fdff3a8aa1e4ac2e369aaad0c36e0a3ea4                        0.5s
 => => extracting sha256:89381e95753af9e4fb0f75d0d6f25329abccb6a68314fe7eda4d894cd0bd1bb4                        0.1s
 => [2/7] ADD . /workspace                                                                                       0.1s
 => [3/7] WORKDIR /workspace                                                                                     0.0s
 => [4/7] RUN rm -rf /workspace/_build                                                                           0.1s
 => [5/7] RUN mix local.hex --force                                                                              1.9s
 => [6/7] RUN mix local.rebar --force                                                                            1.8s
 => ERROR [7/7] RUN mix deps.get                                                                                 1.3s
------
 > [7/7] RUN mix deps.get:
1.052 Resolving Hex dependencies...
1.084 eheap_alloc: Cannot allocate 976733209832459912 bytes of memory (of type "heap_frag").
1.086
1.086 Crash dump is being written to: erl_crash.dump...beam/erl_term.h:1492:tag_val_def() Assertion failed: tag_val_def error
------
Dockerfile:19
--------------------
  17 |     RUN mix local.rebar --force
  18 |
  19 | >>> RUN mix deps.get
  20 |
  21 |     CMD iex --name "octopus@${POD_IP}" --cookie ${ERLANG_COOKIE} -S mix
--------------------
ERROR: failed to solve: process "/bin/sh -c mix deps.get" did not complete successfully: exit code: 139

无法从构建中导出故障转储,任何信息也表示赞赏。


Dockerfile:

FROM elixir:1.16-alpine

ARG MIX_ENV="dev"
ARG POD_IP="127.0.0.1"
ARG ERLANG_COOKIE="octopus_cookie"

ENV MIX_ENV=${MIX_ENV}
ENV POD_IP=${POD_IP}
ENV ERLANG_COOKIE=${ERLANG_COOKIE}


ADD . /workspace
WORKDIR /workspace
RUN rm -rf /workspace/_build

RUN mix local.hex --force
RUN mix local.rebar --force

RUN mix deps.get

CMD iex --name "octopus@${POD_IP}" --cookie ${ERLANG_COOKIE} -S mix

mix.exs:

defmodule OctopusEngine.MixProject do
  use Mix.Project

  def project do
    [
      app: :octopus_engine,
      version: "1.0.0",
      elixir: "~> 1.16",
      start_permanent: Mix.env() == :prod,
      deps: deps(),
      releases: [
        octopus_engine: [
          include_executables_for: [:unix],
          applications: [runtime_tools: :permanent]
        ]
      ]
    ]
  end

  # Run "mix help compile.app" to learn about applications.
  def application do
    [
      mod: {OctopusEngine.Application, []},
      extra_applications: [:logger]
    ]
  end

  # Run "mix help deps" to learn about dependencies.
  defp deps do
    [
      {:k8s, "~> 2.0"},
      {:libcluster, "~> 3.2"},
      {:credo, "~> 1.7", only: [:dev, :test], runtime: false}
    ]
  end
end

检查了 docker-desktop 构建的日志,但没有什么特别的

内存限制为16GB:

docker kubernetes elixir
1个回答
0
投票

通过图像尝试较低版本的 Erlang/OTP 解决了这个问题:

hexpm/elixir:1.16.2-erlang-26.1.2-ubuntu-noble-20240225

我想向 Elixir IRC 社区中的 #benwilson512、#gmorell、#href 表示感谢:

ircs://irc.libera.chat:6697(说明) 频道:#elixir

© www.soinside.com 2019 - 2024. All rights reserved.