fix: replace Dockerfile and add new configuration files for dev-tools setup

This commit is contained in:
2026-03-09 05:23:38 +07:00
parent 82f7ffe33c
commit 662ac1b191
8 changed files with 89 additions and 74 deletions

View File

@@ -1,31 +0,0 @@
FROM debian:bookworm-slim
ARG MISE_VERSION=2026.1.7
ARG TOOLS_DIR=/tools
RUN apt-get update \
&& apt-get -y --no-install-recommends install \
zstd curl git ca-certificates build-essential \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p ${TOOLS_DIR}/bin ${TOOLS_DIR}/config
# Mise environment variables
ENV TOOLS_DIR="${TOOLS_DIR}"
ENV MISE_DATA_DIR="${TOOLS_DIR}"
ENV MISE_CONFIG_DIR="${TOOLS_DIR}/config"
ENV MISE_CACHE_DIR="${TOOLS_DIR}/cache"
ENV MISE_INSTALL_PATH="${TOOLS_DIR}/bin/mise"
ENV PATH="${TOOLS_DIR}/bin:${TOOLS_DIR}/shims:${PATH}"
ENV MISE_GITHUB_ATTESTATIONS=false
ENV MISE_VERSION=${MISE_VERSION}
RUN curl https://mise.run | sh
COPY tools-config/mise.toml ${TOOLS_DIR}/config/mise.toml
RUN sh -c "\
rm -rf ${TOOLS_DIR}/shims ${TOOLS_DIR}/installs \
&& mise install \
&& chmod 755 ${TOOLS_DIR}/bin/mise ${TOOLS_DIR}/shims/* \
"

31
dev-tools/base/Dockerfile Normal file
View File

@@ -0,0 +1,31 @@
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates git sudo tini jq \
&& rm -rf /var/lib/apt/lists/*
COPY --from=ghcr.io/jdx/mise:2026.3.5 /usr/local/bin/mise /tools/bin/mise
# Always needed env vars for mise
ENV PATH="/tools/bin:/tools/shims:${PATH}"
ENV MISE_DATA_DIR="/tools"
ENV MISE_CONFIG_DIR="/tools/config"
# Installation and cache paths
ENV MISE_CACHE_DIR="/tools/.cache"
ENV MISE_INSTALL_PATH="/tools/bin/mise"
# UV environment variables
ENV UV_TOOL_BIN_DIR=/tools/bin
ENV UV_PYTHON=3.11
COPY mise.toml /tools/config/mise.toml
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
HEALTHCHECK --interval=5s --timeout=5s --start-period=300s --retries=5 \
CMD test -f /tools/.ready
ENTRYPOINT ["/usr/bin/tini", "--", "/entrypoint.sh"]
CMD ["sleep", "infinity"]

View File

@@ -0,0 +1,14 @@
services:
dev-tools:
# run `just build dev-tools base` first
image: dev-tools:base
restart: no
environment:
- GITHUB_TOKEN=${GITHUB_TOKEN}
- MISE_DATA_DIR=/tools
- MISE_CONFIG_DIR=/tools/config
volumes:
- dev-tools-data:/tools
volumes:
dev-tools-data:

View File

@@ -0,0 +1,18 @@
#!/bin/bash
set -euo pipefail
rm -f /tools/.ready
mise ls --missing --json | jq -r 'keys[]' | while read -r tool; do
mise install "$tool"
done
mise reshim
uv tool install ansible --with-executables-from ansible-core
chmod -R 755 /tools
touch /tools/.ready
exec "$@"

26
dev-tools/base/mise.toml Normal file
View File

@@ -0,0 +1,26 @@
[tools]
### Runtimes ###
node = "24"
go = "1.26"
uv = "latest"
### Infrastructure ###
kubectl = "latest"
terraform = "latest"
docker-cli = "latest"
# ansible - controlled via uv
### Secrets ###
sops = "latest"
age = "latest"
### CLI ###
just = "latest"
gh = "latest"
jq = "latest"
yq = "latest"
bat = "latest"
ripgrep = "latest"
fzf = "latest"
direnv = "latest"

View File

@@ -1,17 +0,0 @@
services:
dev-tools:
build:
context: .
dockerfile: Dockerfile
args:
- MISE_VERSION=2026.1.7
- TOOLS_DIR=/tools
environment:
- GITHUB_TOKEN=${GITHUB_TOKEN}
volumes:
- dev-tools:/tools
restart: no
volumes:
dev-tools:
name: dev-tools

View File

@@ -1,26 +0,0 @@
[tools]
# programming tools
duckdb = "1"
node = "24"
python = "3.11.14"
go = "1.26"
uv = "latest"
# secret tools
sops = "latest"
age = "latest"
# infra tools
mc = "latest"
supabase = "2"
# dev tools
bat = "latest"
eza = "latest"
ripgrep = "latest"
fzf = "latest"
jq = "latest"
yq = "latest"
just = "latest"
gh = "latest"
starship = "latest"