Files

173 lines
4.2 KiB
Docker
Raw Permalink Normal View History

FROM chrislusf/seaweedfs:4.31 AS seaweedfs
FROM erlang:28.5.0.1
ARG USERNAME=vscode
ARG USER_UID=1000
ARG USER_GID=1000
ARG NODE_MAJOR=24
ARG ELP_VERSION=2026-02-27
2026-08-12 13:21:50 +02:00
ARG PNPM_VERSION=10.29.3
ARG WASM_BINDGEN_VERSION=0.2.123
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
acl \
bash \
build-essential \
ca-certificates \
clang \
cmake \
curl \
dbus-x11 \
desktop-file-utils \
dpkg-dev \
ffmpeg \
fakeroot \
git \
gnupg \
imagemagick \
jq \
libasound2 \
libatk-bridge2.0-0 \
libavcodec-dev \
libavfilter-dev \
libavformat-dev \
libavutil-dev \
libdbus-1-dev \
libdrm2 \
libfido2-dev \
libgbm1 \
libgtk-3-0 \
libimage-exiftool-perl \
libnotify4 \
libnss3 \
libpipewire-0.3-dev \
libpulse-dev \
libsecret-1-0 \
libudev-dev \
libcurl4-openssl-dev \
libswresample-dev \
libswscale-dev \
libvips-dev \
libwayland-dev \
libwebp-dev \
libssl-dev \
libx11-xcb1 \
libxcb-dri3-0 \
libxcomposite1 \
libxdamage1 \
libxkbcommon-dev \
libxkbcommon0 \
libxrandr2 \
libxshmfence1 \
libxss1 \
libxtst6 \
llvm \
meson \
ninja-build \
openssh-client \
pkg-config \
python3 \
python3-pip \
python3-venv \
sudo \
rpm \
unzip \
xz-utils \
xdg-utils \
zstd \
&& rm -rf /var/lib/apt/lists/*
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
apache2-utils \
bat \
btop \
docker-cli \
docker-compose \
dnsutils \
fd-find \
gdb \
htop \
hyperfine \
iproute2 \
iputils-ping \
lldb \
lsof \
ltrace \
net-tools \
netcat-openbsd \
nmap \
postgresql-client \
procps \
redis-tools \
ripgrep \
shellcheck \
shfmt \
socat \
sqlite3 \
strace \
tcpdump \
tmux \
tree \
valgrind \
wrk \
yq \
&& ln -sf /usr/bin/fdfind /usr/local/bin/fd \
&& ln -sf /usr/bin/batcat /usr/local/bin/bat \
&& rm -rf /var/lib/apt/lists/*
RUN curl --retry 5 --retry-delay 2 --retry-all-errors -fsSL https://deb.nodesource.com/setup_${NODE_MAJOR}.x | bash - \
&& apt-get install -y --no-install-recommends nodejs \
&& rm -rf /var/lib/apt/lists/* \
2026-08-12 13:21:50 +02:00
&& corepack enable
RUN python3 -m pip install --break-system-packages --no-cache-dir awscli
2026-08-12 13:21:50 +02:00
COPY tools/fonts/requirements.txt /tmp/fluxer-fonts-requirements.txt
RUN python3 -m pip install --break-system-packages --no-cache-dir -r /tmp/fluxer-fonts-requirements.txt \
&& rm /tmp/fluxer-fonts-requirements.txt \
&& pyftsubset --help >/dev/null \
&& python3 -c "import fontTools, brotli"
RUN ARCH="$(dpkg --print-architecture)" \
&& case "$ARCH" in \
amd64) ELP_ARCH="x86_64" ;; \
arm64) ELP_ARCH="aarch64" ;; \
*) echo "Unsupported architecture for ELP: $ARCH" >&2; exit 1 ;; \
esac \
&& curl --retry 5 --retry-delay 2 --retry-all-errors -fsSL "https://github.com/WhatsApp/erlang-language-platform/releases/download/${ELP_VERSION}/elp-linux-${ELP_ARCH}-unknown-linux-gnu-otp-28.tar.gz" -o /tmp/elp.tgz \
&& tar -C /usr/local/bin -xzf /tmp/elp.tgz elp \
&& chmod +x /usr/local/bin/elp \
&& rm /tmp/elp.tgz
RUN if ! getent group "${USER_GID}" >/dev/null; then groupadd --gid "${USER_GID}" "${USERNAME}"; fi \
&& if ! id -u "${USERNAME}" >/dev/null 2>&1; then useradd --uid "${USER_UID}" --gid "${USER_GID}" -m "${USERNAME}" --shell /bin/bash; fi \
&& echo "${USERNAME} ALL=(root) NOPASSWD:ALL" > "/etc/sudoers.d/${USERNAME}" \
&& chmod 0440 "/etc/sudoers.d/${USERNAME}"
COPY --from=seaweedfs /usr/bin/weed /usr/local/bin/weed
USER ${USERNAME}
ENV DOCKER_HOST="unix:///var/run/docker.sock" \
PATH="/home/${USERNAME}/.cargo/bin:${PATH}" \
PNPM_HOME="/home/${USERNAME}/.local/share/pnpm"
2026-08-12 13:21:50 +02:00
ENV CC_wasm32_unknown_unknown="clang" \
AR_wasm32_unknown_unknown="llvm-ar"
RUN curl --retry 5 --retry-delay 2 --retry-all-errors -fsSL https://sh.rustup.rs | sh -s -- -y --profile minimal --component clippy,rustfmt \
&& rustup target add wasm32-unknown-unknown \
2026-08-12 13:21:50 +02:00
&& cargo install cargo-watch --locked \
&& cargo install wasm-bindgen-cli --version "${WASM_BINDGEN_VERSION}" --locked \
&& rm -rf "/home/${USERNAME}/.cargo/registry" "/home/${USERNAME}/.cargo/git"
2026-08-12 13:21:50 +02:00
RUN corepack prepare "pnpm@${PNPM_VERSION}" --activate \
&& pnpm --version
WORKDIR /workspaces/fluxer