mirror of
https://github.com/erlang/docker-erlang-otp.git
synced 2025-04-19 01:44:02 +03:00
Add Erlang/OTP 28 (currently 28.0-rc2) (#499)
This commit is contained in:
parent
95d5cdc0b1
commit
c572ad3b71
1
.github/workflows/erlang.yaml
vendored
1
.github/workflows/erlang.yaml
vendored
@ -8,6 +8,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
otp: ['DIR=master', 'DIR=master VARIANT=alpine',
|
||||
'DIR=28', 'DIR=28 VARIANT=slim', 'DIR=28 VARIANT=alpine',
|
||||
'DIR=27', 'DIR=27 VARIANT=slim', 'DIR=27 VARIANT=alpine',
|
||||
'DIR=26', 'DIR=26 VARIANT=slim', 'DIR=26 VARIANT=alpine',
|
||||
'DIR=25', 'DIR=25 VARIANT=slim', 'DIR=25 VARIANT=alpine',
|
||||
|
69
28/Dockerfile
Normal file
69
28/Dockerfile
Normal file
@ -0,0 +1,69 @@
|
||||
FROM buildpack-deps:bookworm
|
||||
|
||||
ENV OTP_VERSION="28.0-rc2" \
|
||||
REBAR3_VERSION="3.24.0"
|
||||
|
||||
LABEL org.opencontainers.image.version=$OTP_VERSION
|
||||
|
||||
# We'll install the build dependencies for erlang-odbc along with the erlang
|
||||
# build process:
|
||||
RUN set -xe \
|
||||
&& OTP_DOWNLOAD_URL="https://github.com/erlang/otp/releases/download/OTP-${OTP_VERSION}/otp_src_${OTP_VERSION}.tar.gz" \
|
||||
&& OTP_DOWNLOAD_SHA256="1933a7811aacecb528e3d05f8e552e15439d733934064c821639fb22735c928d" \
|
||||
&& runtimeDeps='libodbc1 \
|
||||
libsctp1 \
|
||||
libwxgtk3.2 \
|
||||
libwxgtk-webview3.2-dev ' \
|
||||
&& buildDeps='unixodbc-dev \
|
||||
libsctp-dev ' \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends $runtimeDeps \
|
||||
&& apt-get install -y --no-install-recommends $buildDeps \
|
||||
&& curl -fSL -o otp-src.tar.gz "$OTP_DOWNLOAD_URL" \
|
||||
&& echo "$OTP_DOWNLOAD_SHA256 otp-src.tar.gz" | sha256sum -c - \
|
||||
&& export ERL_TOP="/usr/src/otp_src_${OTP_VERSION%%@*}" \
|
||||
&& mkdir -vp $ERL_TOP \
|
||||
&& tar -xzf otp-src.tar.gz -C $ERL_TOP --strip-components=1 \
|
||||
&& rm otp-src.tar.gz \
|
||||
&& ( cd $ERL_TOP \
|
||||
&& ./otp_build autoconf \
|
||||
&& gnuArch="$(dpkg-architecture --query DEB_HOST_GNU_TYPE)" \
|
||||
&& ./configure --build="$gnuArch" \
|
||||
&& make -j$(nproc) \
|
||||
&& make -j$(nproc) docs DOC_TARGETS=chunks \
|
||||
&& make install install-docs DOC_TARGETS=chunks ) \
|
||||
&& find /usr/local -name examples | xargs rm -rf \
|
||||
&& apt-get purge -y --auto-remove $buildDeps \
|
||||
&& rm -rf $ERL_TOP /var/lib/apt/lists/*
|
||||
|
||||
CMD ["erl"]
|
||||
|
||||
# extra useful tools here: rebar & rebar3
|
||||
|
||||
ENV REBAR_VERSION="2.6.4"
|
||||
|
||||
RUN set -xe \
|
||||
&& REBAR_DOWNLOAD_URL="https://github.com/rebar/rebar/archive/${REBAR_VERSION}.tar.gz" \
|
||||
&& REBAR_DOWNLOAD_SHA256="577246bafa2eb2b2c3f1d0c157408650446884555bf87901508ce71d5cc0bd07" \
|
||||
&& mkdir -p /usr/src/rebar-src \
|
||||
&& curl -fSL -o rebar-src.tar.gz "$REBAR_DOWNLOAD_URL" \
|
||||
&& echo "$REBAR_DOWNLOAD_SHA256 rebar-src.tar.gz" | sha256sum -c - \
|
||||
&& tar -xzf rebar-src.tar.gz -C /usr/src/rebar-src --strip-components=1 \
|
||||
&& rm rebar-src.tar.gz \
|
||||
&& cd /usr/src/rebar-src \
|
||||
&& ./bootstrap \
|
||||
&& install -v ./rebar /usr/local/bin/ \
|
||||
&& rm -rf /usr/src/rebar-src
|
||||
|
||||
RUN set -xe \
|
||||
&& REBAR3_DOWNLOAD_URL="https://github.com/erlang/rebar3/archive/${REBAR3_VERSION}.tar.gz" \
|
||||
&& REBAR3_DOWNLOAD_SHA256="391b0eaa2825bb427fef1e55a0d166493059175f57a33b00346b84a20398216c" \
|
||||
&& mkdir -p /usr/src/rebar3-src \
|
||||
&& curl -fSL -o rebar3-src.tar.gz "$REBAR3_DOWNLOAD_URL" \
|
||||
&& echo "$REBAR3_DOWNLOAD_SHA256 rebar3-src.tar.gz" | sha256sum -c - \
|
||||
&& tar -xzf rebar3-src.tar.gz -C /usr/src/rebar3-src --strip-components=1 \
|
||||
&& rm rebar3-src.tar.gz \
|
||||
&& cd /usr/src/rebar3-src \
|
||||
&& HOME=$PWD ./bootstrap \
|
||||
&& install -v ./rebar3 /usr/local/bin/ \
|
||||
&& rm -rf /usr/src/rebar3-src
|
68
28/alpine/Dockerfile
Normal file
68
28/alpine/Dockerfile
Normal file
@ -0,0 +1,68 @@
|
||||
FROM alpine:3.21
|
||||
|
||||
ENV OTP_VERSION="28.0-rc2" \
|
||||
REBAR3_VERSION="3.24.0"
|
||||
|
||||
LABEL org.opencontainers.image.version=$OTP_VERSION
|
||||
|
||||
RUN set -xe \
|
||||
&& OTP_DOWNLOAD_URL="https://github.com/erlang/otp/releases/download/OTP-${OTP_VERSION}/otp_src_${OTP_VERSION}.tar.gz" \
|
||||
&& OTP_DOWNLOAD_SHA256="1933a7811aacecb528e3d05f8e552e15439d733934064c821639fb22735c928d" \
|
||||
&& REBAR3_DOWNLOAD_SHA256="391b0eaa2825bb427fef1e55a0d166493059175f57a33b00346b84a20398216c" \
|
||||
&& apk add --no-cache --virtual .fetch-deps \
|
||||
curl \
|
||||
ca-certificates \
|
||||
&& curl -fSL -o otp-src.tar.gz "$OTP_DOWNLOAD_URL" \
|
||||
&& echo "$OTP_DOWNLOAD_SHA256 otp-src.tar.gz" | sha256sum -c - \
|
||||
&& apk add --no-cache --virtual .build-deps \
|
||||
dpkg-dev dpkg \
|
||||
gcc \
|
||||
g++ \
|
||||
libc-dev \
|
||||
linux-headers \
|
||||
make \
|
||||
autoconf \
|
||||
ncurses-dev \
|
||||
openssl-dev \
|
||||
unixodbc-dev \
|
||||
lksctp-tools-dev \
|
||||
tar \
|
||||
&& export ERL_TOP="/usr/src/otp_src_${OTP_VERSION%%@*}" \
|
||||
&& mkdir -vp $ERL_TOP \
|
||||
&& tar -xzf otp-src.tar.gz -C $ERL_TOP --strip-components=1 \
|
||||
&& rm otp-src.tar.gz \
|
||||
&& ( cd $ERL_TOP \
|
||||
&& ./otp_build autoconf \
|
||||
&& gnuArch="$(dpkg-architecture --query DEB_HOST_GNU_TYPE)" \
|
||||
&& ./configure --build="$gnuArch" \
|
||||
&& make -j$(getconf _NPROCESSORS_ONLN) \
|
||||
&& make install ) \
|
||||
&& rm -rf $ERL_TOP \
|
||||
&& find /usr/local -regex '/usr/local/lib/erlang/\(lib/\|erts-\).*/\(man\|doc\|obj\|c_src\|emacs\|info\|examples\)' | xargs rm -rf \
|
||||
&& find /usr/local -name src | xargs -r find | grep -v '\.hrl$' | xargs rm -v || true \
|
||||
&& find /usr/local -name src | xargs -r find | xargs rmdir -vp || true \
|
||||
&& scanelf --nobanner -E ET_EXEC -BF '%F' --recursive /usr/local | xargs -r strip --strip-all \
|
||||
&& scanelf --nobanner -E ET_DYN -BF '%F' --recursive /usr/local | xargs -r strip --strip-unneeded \
|
||||
&& runDeps="$( \
|
||||
scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \
|
||||
| tr ',' '\n' \
|
||||
| sort -u \
|
||||
| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
|
||||
)" \
|
||||
&& REBAR3_DOWNLOAD_URL="https://github.com/erlang/rebar3/archive/${REBAR3_VERSION}.tar.gz" \
|
||||
&& curl -fSL -o rebar3-src.tar.gz "$REBAR3_DOWNLOAD_URL" \
|
||||
&& echo "${REBAR3_DOWNLOAD_SHA256} rebar3-src.tar.gz" | sha256sum -c - \
|
||||
&& mkdir -p /usr/src/rebar3-src \
|
||||
&& tar -xzf rebar3-src.tar.gz -C /usr/src/rebar3-src --strip-components=1 \
|
||||
&& rm rebar3-src.tar.gz \
|
||||
&& cd /usr/src/rebar3-src \
|
||||
&& HOME=$PWD ./bootstrap \
|
||||
&& install -v ./rebar3 /usr/local/bin/ \
|
||||
&& rm -rf /usr/src/rebar3-src \
|
||||
&& apk add --virtual .erlang-rundeps \
|
||||
$runDeps \
|
||||
lksctp-tools \
|
||||
ca-certificates \
|
||||
&& apk del .fetch-deps .build-deps
|
||||
|
||||
CMD ["erl"]
|
63
28/slim/Dockerfile
Normal file
63
28/slim/Dockerfile
Normal file
@ -0,0 +1,63 @@
|
||||
FROM debian:bookworm
|
||||
|
||||
ENV OTP_VERSION="28.0-rc2" \
|
||||
REBAR3_VERSION="3.24.0"
|
||||
|
||||
LABEL org.opencontainers.image.version=$OTP_VERSION
|
||||
|
||||
# We'll install the build dependencies, and purge them on the last step to make
|
||||
# sure our final image contains only what we've just built:
|
||||
RUN set -xe \
|
||||
&& OTP_DOWNLOAD_URL="https://github.com/erlang/otp/releases/download/OTP-${OTP_VERSION}/otp_src_${OTP_VERSION}.tar.gz" \
|
||||
&& OTP_DOWNLOAD_SHA256="1933a7811aacecb528e3d05f8e552e15439d733934064c821639fb22735c928d" \
|
||||
&& fetchDeps=' \
|
||||
curl \
|
||||
ca-certificates' \
|
||||
&& apt-get update \
|
||||
&& apt-get install -y --no-install-recommends $fetchDeps \
|
||||
&& curl -fSL -o otp-src.tar.gz "$OTP_DOWNLOAD_URL" \
|
||||
&& echo "$OTP_DOWNLOAD_SHA256 otp-src.tar.gz" | sha256sum -c - \
|
||||
&& runtimeDeps=' \
|
||||
libodbc1 \
|
||||
libssl3 \
|
||||
libsctp1 \
|
||||
' \
|
||||
&& buildDeps=' \
|
||||
autoconf \
|
||||
dpkg-dev \
|
||||
gcc \
|
||||
g++ \
|
||||
make \
|
||||
libncurses-dev \
|
||||
unixodbc-dev \
|
||||
libssl-dev \
|
||||
libsctp-dev \
|
||||
' \
|
||||
&& apt-get install -y --no-install-recommends $runtimeDeps \
|
||||
&& apt-get install -y --no-install-recommends $buildDeps \
|
||||
&& export ERL_TOP="/usr/src/otp_src_${OTP_VERSION%%@*}" \
|
||||
&& mkdir -vp $ERL_TOP \
|
||||
&& tar -xzf otp-src.tar.gz -C $ERL_TOP --strip-components=1 \
|
||||
&& rm otp-src.tar.gz \
|
||||
&& ( cd $ERL_TOP \
|
||||
&& ./otp_build autoconf \
|
||||
&& gnuArch="$(dpkg-architecture --query DEB_HOST_GNU_TYPE)" \
|
||||
&& ./configure --build="$gnuArch" \
|
||||
&& make -j$(nproc) \
|
||||
&& make install ) \
|
||||
&& find /usr/local -name examples | xargs rm -rf \
|
||||
&& REBAR3_DOWNLOAD_URL="https://github.com/erlang/rebar3/archive/${REBAR3_VERSION}.tar.gz" \
|
||||
&& REBAR3_DOWNLOAD_SHA256="391b0eaa2825bb427fef1e55a0d166493059175f57a33b00346b84a20398216c" \
|
||||
&& mkdir -p /usr/src/rebar3-src \
|
||||
&& curl -fSL -o rebar3-src.tar.gz "$REBAR3_DOWNLOAD_URL" \
|
||||
&& echo "$REBAR3_DOWNLOAD_SHA256 rebar3-src.tar.gz" | sha256sum -c - \
|
||||
&& tar -xzf rebar3-src.tar.gz -C /usr/src/rebar3-src --strip-components=1 \
|
||||
&& rm rebar3-src.tar.gz \
|
||||
&& cd /usr/src/rebar3-src \
|
||||
&& HOME=$PWD ./bootstrap \
|
||||
&& install -v ./rebar3 /usr/local/bin/ \
|
||||
&& rm -rf /usr/src/rebar3-src \
|
||||
&& apt-get purge -y --auto-remove $buildDeps $fetchDeps \
|
||||
&& rm -rf $ERL_TOP /var/lib/apt/lists/*
|
||||
|
||||
CMD ["erl"]
|
@ -1,7 +1,7 @@
|
||||
#!/bin/bash
|
||||
set -eu
|
||||
|
||||
declare -a -r versions=(27 26 25 24)
|
||||
declare -a -r versions=(28 27 26 25 24)
|
||||
declare -A -r aliases=(
|
||||
[27]='latest'
|
||||
)
|
||||
|
Loading…
x
Reference in New Issue
Block a user