我在尝试使用从源代码编译的 erlang 26 构建图像时遇到问题,当我运行时,docker build .
我得到
=> ERROR [ 7/14] RUN /home/erl/otp_src_26.0.2/make 0.3s
------
> [ 7/14] RUN /home/erl/otp_src_26.0.2/make:
#0 0.244 /bin/sh: 1: /home/erl/otp_src_26.0.2/make: Permission denied
------
Dockerfile:53
--------------------
51 |
52 |
53 | >>> RUN /home/erl/otp_src_${ERLANG_VERSION}/make
54 |
55 | RUN /home/erl/otp_src_${ERLANG_VERSION}/make install && \
--------------------
ERROR: failed to solve: process "/bin/sh -c /home/erl/otp_src_${ERLANG_VERSION}/make" did not complete successfully: exit code: 126
我尝试USER root
使用 、 usingmake 4.2
和chmod 777
整个文件夹设置 root 用户,但没有任何变化。我可以在本地计算机上执行相同的步骤,并且它们可以工作。
在此之前我正在使用https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
但他们不提供最新版本。
我知道我可以使用官方图片,但我喜欢先这样做
这是 Dockerfile
FROM ubuntu:22.04
ENV LANG C.UTF-8
ENV LC_ALL C.UTF-8
ENV ERLANG_VERSION 26.0.2
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update -qq && \
apt-get install -y --no-install-recommends \
ca-certificates \
git \
gnupg \
inotify-tools \
make \
gcc \
libssl-dev \
libncurses-dev \
wget && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Install Erlang
RUN wget -P /home/erl https://github.com/erlang/otp/releases/download/OTP-${ERLANG_VERSION}/otp_src_${ERLANG_VERSION}.tar.gz && \
tar -xf /home/erl/otp_src_${ERLANG_VERSION}.tar.gz -C /home/erl
RUN /home/erl/otp_src_${ERLANG_VERSION}/configure
RUN /home/erl/otp_src_${ERLANG_VERSION}/make
RUN /home/erl/otp_src_${ERLANG_VERSION}/make install && \
rm -r /home/erl
WORKDIR /app
/home/erl/otp_src_${ERLANG_VERSION}/make
是一个目录,因此当您尝试运行它时,您会收到神秘的消息“权限被拒绝”。该
make
可执行文件不位于 Erlang 目录中。它安装在/usr/bin
. Make 假设您从项目所在的目录运行它。代替
您可以
cd
进入该目录并运行您需要的命令。像这样