运行Elixir容器引导程序时,加载模块pooler_app时出错,如何解决?

时间:2019-06-05 12:57:35

标签: docker erlang elixir

我正在使用Elixir应用程序运行容器,但是当我尝试进行引导时,出现以下错误:

  

12:49:59.687 [错误] beam / beam_load.c(1863):加载模块pooler_app时出错:     这个BEAM文件是为运行时系统的20以上版本编译的。     要解决此问题,请使用20编译器重新编译此模块。     (使用操作码164;此仿真器最多仅支持159。)

     

12:49:59.707 [info]退出应用程序池:退出于::pooler_app.start(:n​​ormal,[])       **(退出)引发了异常:           **(UndefinedFunctionError)函数:pooler_app.start / 2未定义(模块:pooler_app不可用)               (池):pooler_app.start(:n​​ormal,[])               (内核)application_master.erl:273::application_master.start_it_old / 4   **(ArgumentError)参数错误       (stdlib):ets.lookup(:cqerl_clusters,:system)       (cqerl)/mnt/svcs/lukla/deps/cqerl/src/cqerl_cluster.erl:52::cqerl_cluster.get_any_client / 1       lib / cassandra.ex:50:Lukla.Cassandra.new_client / 1       lib / cassandra.ex:11:Lukla.Cassandra.new!/ 1       lib / mix / tasks / cassandra.drop.ex:16:Mix.Tasks.Cassandra.Drop.run/1       (混合)lib / mix / task.ex:314:Mix.Task.run_task / 3       (elixir)lib / enum.ex:737:枚举。“-each / 2-lists ^ foreach / 1-0-” / 2       (elixir)lib / enum.ex:737:Enum.each / 2

我尝试更改Elixir版本和Erlang版本,但错误仍然存​​在。

我在Elixir 1.6.5和Erlang 20.0中使用asdf

编辑

我删除了_build文件夹,现在当我再次尝试引导时,出现以下错误:

  

14:17:44.539 [错误]加载/mnt/svcs/lukla/_build/dev/lib/re2/ebin/re2.beam失败::badfile

     

14:17:44.539 [error] beam / beam_load.c(1863):加载模块re2时出错:     这个BEAM文件是为运行时系统的20以上版本编译的。     要解决此问题,请使用20编译器重新编译此模块。     (使用操作码164;此仿真器最多仅支持159。)

     

**(退出)在以下位置退出::gen_fsm.sync_send_event(#PID <0.360.0>,{:send_query,#Reference <0.2121126444.1751646212.63871>,{:cql_query,“如果存在lukla_dev,则删除键盘空间;”,[ ] 、: undefined,false,100,:undefined,:one,:undefined,:undefined}},5000)       **(退出)引发了异常:           **(UndefinedFunctionError)函数:re2.compile / 1未定义(模块:re2不可用)               (re2):re2.compile('\'(\?| :: \ w +)\'(?:(?:[?:[^“] ” [^“] “) [^”] $)')               (cqerl)/mnt/svcs/lukla/deps/cqerl/src/cqerl_cache.erl:58::cqerl_cache.lookup / 2               (cqerl)/mnt/svcs/lukla/deps/cqerl/src/cqerl_client.erl:244::cqerl_client.live/3               (stdlib)gen_fsm.erl:483::gen_fsm.handle_msg / 8               (stdlib)proc_lib.erl:247::proc_lib.init_p_do_apply / 3       (stdlib)gen_fsm.erl:252::gen_fsm.sync_send_event / 3       (cqerl)/mnt/svcs/lukla/deps/cqerl/src/cqerl.erl:196::cqerl.run_query / 3       lib / cqex / query.ex:62:CQEx.Query.call/2       lib / cqex / query.ex:75:CQEx.Query.call!/ 2       lib / mix / tasks / cassandra.drop.ex:18:Mix.Tasks.Cassandra.Drop.run/1       (混合)lib / mix / task.ex:314:Mix.Task.run_task / 3       (elixir)lib / enum.ex:737:枚举。“-each / 2-lists ^ foreach / 1-0-” / 2       (elixir)lib / enum.ex:737:Enum.each / 2

     

14:17:44.572 [错误] **状态机#PID <0.360.0>终止   **上一条消息是{:“ $ gen_sync_event”,{#PID <0.74.0>,#Reference <0.2121126444.1751646212.63875>},{:send_query,#Reference <0.2121126444.1751646212.63871>,{:cql_query,“ DROP KEYSPACE如果存在lukla_dev;“,[],:undefined,false,100,:undefined,:one,:undefined,:undefined}}}   **当State ==:live   **数据== {:client_state,:cqerl_auth_plain_handler,:undefined,:undefined,{'cassandra',9042},:tcp,#Port <0.8647>,:undefined,:system,:infinity,“”,:undefined, [{0,:undefined},{1,:undefined},{2,:undefined},{3,:undefined},{4,:undefined},{5,:undefined},{6,:undefined}, {7,:undefined},{8,:undefined},{9,:undefined},{10,:undefined},{11,:undefined},{12,:undefined},{13,:undefined},{ 14,:未定义},{15,:未定义},{16,:未定义},{17,:未定义},{18,:未定义},{19,:未定义},{20,:未定义},{21 ,:undefined},{22,:undefined},{23,:undefined},{24,:undefined},{25,:undefined},{26,:undefined},{27,:undefined},{28, :undefined},{29,:undefined},{30,:undefined},{31,:undefined},{32,:undefined},{33,:undefined},{34,:undefined},{35,。 ..},{...},...],{[],[]},[0、1、2、3、4、5、6、7、8、9、10、11、12, 13,14,15,16,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,...],[ ],:hash,{{'cassandra',9042},[ included_applications:[],键空间:: system,num_clients:2,query_timeout:5000]}}   **终止原因=   ** {:“无法加载模块”,[{:re2,:compile,['\'(\?| :: \ w +)\'(?:(?:[^“ ] “ [^”] “) [^”] $)'],[]},{:cqerl_cache,:lookup,2,[file:'/ mnt /svcs/lukla/deps/cqerl/src/cqerl_cache.erl,行:58]},{:cqerl_client,:live,3,[文件:'/ mnt / svcs / lukla / deps / cqerl / src / cqerl_client。 erl',行:244]},{:gen_fsm,:handle_msg,8,[文件:'gen_fsm.erl',行:483]},{:proc_lib,:init_p_do_apply,3,[文件:'proc_lib.erl' ,行:247]}]}

我的.dockerignore是:

_build
.git
node_modules
deps
priv/static

我的Dockerfile

FROM xerpa/ubuntu:v20190114

# Compile in prod mode by default
ARG MIX_ENV=prod

# .mix folder will be inside the project
ARG LUKLA_HOME=/var/www/lukla

ENV MIX_ENV=${MIX_ENV}
ENV LUKLA_HOME=${LUKLA_HOME}
ENV MIX_HOME=${LUKLA_HOME}/.mix

WORKDIR $LUKLA_HOME

RUN wget https://packages.erlang-solutions.com/ubuntu/erlang_solutions.asc -O /erlang-solutions.asc \
    && echo deb https://packages.erlang-solutions.com/ubuntu artful contrib | tee /etc/apt/sources.list.d/erlang-solutions.list \
    && apt-key add /erlang-solutions.asc

RUN export DEBIAN_FRONTEND=noninteractive \
    && apt-get update \
    && apt-get install -y \
    esl-erlang=1:20.3 \
    libboost-dev \
    libboost-system-dev \
    libboost-thread-dev \
    libgraphicsmagick-dev \
    libgtest-dev \
    libicu-dev \
    libphonenumber-dev \
    libgeocoding7 \
    libprotobuf-dev \
    libre2-dev \
    libtool-bin \
    libwebp-dev \
    build-essential \
    cmake \
    cmake-curses-gui \
    lsb-release \
    protobuf-compiler \
    openjdk-8-jre \
    locales \
    poppler-utils \
    elixir=1.6.5-1 \
    tzdata \
    && ln -fs /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime \
    && dpkg-reconfigure --frontend noninteractive tzdata \
    && rm -rf /var/lib/apt/lists/*

RUN echo en_US.UTF-8 UTF-8 | tee /etc/locale.gen
RUN echo locales locales/default_environment_locale select en_US.UTF-8 | debconf-set-selections
RUN echo locales locales/locales_to_be_generated multiselect en_US ISO-8859-1, en_US.UTF-8 UTF-8 | debconf-set-selections
RUN locale-gen

# Stuff that should be cached
COPY ./.credo.exs ./.credo.exs
COPY ./.formatter.exs ./.formatter.exs
COPY ./apps/lukla_web/mix.exs ./apps/lukla_web/mix.exs
COPY ./apps/magoo/mix.exs ./apps/magoo/mix.exs
COPY ./apps/yak/mix.exs ./apps/yak/mix.exs
COPY ./mix.exs ./mix.exs
COPY ./mix.lock ./mix.lock
COPY ./config ./config
COPY ./automation ./automation

RUN test -f ${MIX_HOME}/archives/hex*.ez || mix local.hex --force
RUN test -f ${MIX_HOME}/rebar || mix local.rebar --force

RUN mix hex.organization auth xerpa --key xxxxxxxxxxxxxxxxxxxxxxx
RUN mix deps.get
RUN mix deps.compile

COPY ./apps ./apps
COPY ./boot ./boot
COPY ./doc ./doc
COPY ./package ./package

RUN mix compile
RUN mix phoenix.digest apps/lukla_web/web/static/assets -o apps/lukla_web/priv/static

1 个答案:

答案 0 :(得分:1)

第一个错误消息表示版本已过时,然后解决我需要的操作:

rm -rf project/_build

然后再次尝试引导程序,但是它显示了第二个错误,关于使用不同版本编译的re2 lib,甚至删除了_build并且图像不能解决问题,于是我想关于编译项目(和库,然后再尝试引导):

mix compile

如@MarcosTapajós所述,我相信mix clean也可以使用。

然后我的命令起作用了:

./project bootstrap

我想我的机器上还有其他地方软件包过时了。