Estou tendo problemas ao tentar construir uma imagem com o erlang 26 compilado do fonte, quando executo docker build .
recebo
=> 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
Eu tentei definir o usuário root com USER root
, using make 4.2
e chmod 777
a pasta inteira, mas nada muda. Posso seguir as mesmas etapas na minha máquina local e elas funcionam.
Antes disso eu estava usando https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb
, mas eles não fornecem as últimas versões.
Eu sei que posso usar a imagem oficial, mas gosto de fazer assim primeiro
Aqui está o 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
é um diretório e, portanto, você recebe a mensagem enigmática 'Permissão negada' ao tentar executá-lo.O
make
executável não está localizado no diretório Erlang. Está instalado em/usr/bin
. Make assume que você está executando a partir do diretório onde seu projeto está localizado.Em vez de
você pode
cd
entrar no diretório e executar os comandos necessários. Assim