我正在使用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(:normal,[]) **(退出)引发了异常: **(UndefinedFunctionError)函数:pooler_app.start / 2未定义(模块:pooler_app不可用) (池):pooler_app.start(:normal,[]) (内核)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
答案 0 :(得分:1)
第一个错误消息表示版本已过时,然后解决我需要的操作:
rm -rf project/_build
然后再次尝试引导程序,但是它显示了第二个错误,关于使用不同版本编译的re2
lib,甚至删除了_build
并且图像不能解决问题,于是我想关于编译项目(和库,然后再尝试引导):
mix compile
如@MarcosTapajós所述,我相信mix clean
也可以使用。
然后我的命令起作用了:
./project bootstrap
我想我的机器上还有其他地方软件包过时了。