mirror of
https://github.com/fluxerapp/fluxer.git
synced 2026-09-03 05:10:25 +03:00
173 lines
4.2 KiB
Docker
173 lines
4.2 KiB
Docker
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
|
|
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/* \
|
|
&& corepack enable
|
|
|
|
RUN python3 -m pip install --break-system-packages --no-cache-dir awscli
|
|
|
|
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"
|
|
|
|
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 \
|
|
&& 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"
|
|
|
|
RUN corepack prepare "pnpm@${PNPM_VERSION}" --activate \
|
|
&& pnpm --version
|
|
|
|
WORKDIR /workspaces/fluxer
|