44# Global Arguments
55# ==============================================================================
66ARG GO_VERSION=1.25.5
7- ARG UBUNTU_VERSION=24.04
7+ ARG DEBIAN_VERSION=trixie-20251208
8+ # ARG GO_VERSION=1.25.5-debian13
9+ # ARG DEBIAN_VERSION=trixie-debian13-fips
810
911# ==============================================================================
1012# Stage 1: Go Tool Builder
1113# ==============================================================================
1214FROM golang:${GO_VERSION}-bookworm AS go-builder
15+ # FROM dhi.io/golang:${GO_VERSION}-dev AS go-builder
1316
1417ARG TARGETARCH
1518
@@ -18,13 +21,15 @@ ENV CGO_ENABLED=0 \
1821 GOARCH=${TARGETARCH}
1922
2023ENV AIR_VERSION=v1.63.4 \
21- DELVE_VERSION=v1.25.2 \
24+ DELVE_VERSION=v1.26.0 \
2225 MOCKGEN_VERSION=v0.6.0 \
2326 BUF_VERSION=v1.61.0 \
2427 PROTOC_GEN_GO_VERSION=v1.36.10 \
28+ PROTOC_GEN_GO_GRPC_VERSION=v1.6.0 \
2529 PROTOC_GEN_CONNECT_GO_VERSION=v1.19.1 \
30+ GRPC_GATEWAY_VERSION=v2.27.4 \
2631 OAPI_VERSION=v2.5.1 \
27- GOLANGCI_LINT_VERSION=v2.7.1
32+ GOLANGCI_LINT_VERSION=v2.7.2
2833
2934RUN --mount=type=cache,target=/go/pkg/mod \
3035 --mount=type=cache,target=/root/.cache/go-build \
@@ -33,7 +38,10 @@ RUN --mount=type=cache,target=/go/pkg/mod \
3338 go install go.uber.org/mock/mockgen@${MOCKGEN_VERSION} && \
3439 go install github.com/bufbuild/buf/cmd/buf@${BUF_VERSION} && \
3540 go install google.golang.org/protobuf/cmd/protoc-gen-go@${PROTOC_GEN_GO_VERSION} && \
41+ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@${PROTOC_GEN_GO_GRPC_VERSION} && \
3642 go install connectrpc.com/connect/cmd/protoc-gen-connect-go@${PROTOC_GEN_CONNECT_GO_VERSION} && \
43+ go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway@${GRPC_GATEWAY_VERSION} && \
44+ go install github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2@${GRPC_GATEWAY_VERSION} && \
3745 go install github.com/oapi-codegen/oapi-codegen/v2/cmd/oapi-codegen@${OAPI_VERSION} && \
3846 go install github.com/golangci/golangci-lint/v2/cmd/golangci-lint@${GOLANGCI_LINT_VERSION} && \
3947 if [ -d "/go/bin/linux_${TARGETARCH}" ]; then \
@@ -44,7 +52,8 @@ RUN --mount=type=cache,target=/go/pkg/mod \
4452# ==============================================================================
4553# Stage 2: Development Environment
4654# ==============================================================================
47- FROM ubuntu:${UBUNTU_VERSION}
55+ FROM debian:${DEBIAN_VERSION}
56+ # FROM dhi.io/debian-base:${DEBIAN_VERSION}
4857
4958ARG TARGETARCH
5059
@@ -58,19 +67,23 @@ RUN --mount=type=cache,target=/var/cache/apt/archives,id=apt-archives-${TARGETAR
5867 wget \
5968 unzip \
6069 ca-certificates \
61- openjdk-17 -jdk-headless \
70+ openjdk-25 -jdk-headless \
6271 maven \
6372 jq \
6473 python3 \
6574 python3-pip \
6675 protobuf-compiler \
6776 libprotobuf-dev \
77+ gnupg lsb-release \
78+ locales \
79+ && localedef -f UTF-8 -i ja_JP ja_JP.UTF-8 \
6880 && rm -rf /var/lib/apt/lists/*
6981
7082# ------------------------------------------------------------------------------
7183# Flyway
7284# ------------------------------------------------------------------------------
73- ENV FLYWAY_VERSION=9.9.0
85+ ENV FLYWAY_VERSION=9.9.0 \
86+ JAVA_ARGS="--enable-native-access=ALL-UNNAMED"
7487
7588RUN curl -L -o flyway.tar.gz https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/${FLYWAY_VERSION}/flyway-commandline-${FLYWAY_VERSION}-linux-x64.tar.gz \
7689 && tar -xzf flyway.tar.gz \
@@ -83,6 +96,7 @@ RUN curl -L -o flyway.tar.gz https://repo1.maven.org/maven2/org/flywaydb/flyway-
8396# OpenAPI Generator CLI
8497# ------------------------------------------------------------------------------
8598ENV OPENAPI_GENERATOR_VERSION=7.17.0
99+
86100RUN curl -fsSL https://raw.githubusercontent.com/OpenAPITools/openapi-generator/"v${OPENAPI_GENERATOR_VERSION}" /bin/utils/openapi-generator-cli.sh -o /usr/local/bin/openapi-generator-cli \
87101 && chmod +x /usr/local/bin/openapi-generator-cli
88102
@@ -95,16 +109,38 @@ ENV PATH=/root/.local/bin:$PATH
95109# ------------------------------------------------------------------------------
96110# Node.js Tools (pnpm, rulesync など)
97111# ------------------------------------------------------------------------------
112+ ENV NPM_VERSION=11.7.0 \
113+ PNPM_VERSION=10.26.2 \
114+ RULESYNC_VERSION=4.3.1 \
115+ CONTEXT7_VERSION=2.0.0
116+
98117RUN curl -fsSL https://deb.nodesource.com/setup_current.x | bash - \
99118 && apt-get install -y nodejs
100119
101120RUN --mount=type=cache,target=/root/.npm \
102- npm install -g npm@latest --force && \
103- npm install -g pnpm && \
104- npm install -g rulesync && \
105- npm install -g @upstash/context7-mcp && \
121+ npm install -g " npm@${NPM_VERSION}" --force && \
122+ npm install -g " pnpm@${PNPM_VERSION}" && \
123+ npm install -g " rulesync@${RULESYNC_VERSION}" && \
124+ npm install -g " @upstash/context7-mcp@${CONTEXT7_VERSION}" && \
106125 npm cache clean --force
107126
127+ # ------------------------------------------------------------------------------
128+ # Docker
129+ # ------------------------------------------------------------------------------
130+ RUN for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do apt-get remove -y $pkg; done \
131+ && apt autoremove -y
132+ RUN install -m 0755 -d /etc/apt/keyrings \
133+ && curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc \
134+ && chmod a+r /etc/apt/keyrings/docker.asc \
135+ && printf "Types: deb\n \
136+ URIs: https://download.docker.com/linux/debian\n \
137+ Suites: %s\n \
138+ Components: stable\n \
139+ Signed-By: /etc/apt/keyrings/docker.asc\n " "$(. /etc/os-release && echo " $VERSION_CODENAME")" > /etc/apt/sources.list.d/docker.sources \
140+ && apt-get update \
141+ && apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin \
142+ && rm -rf /var/lib/apt/lists/*
143+
108144# ------------------------------------------------------------------------------
109145# AWS CLI v2
110146# ------------------------------------------------------------------------------
@@ -134,8 +170,10 @@ ENV CLAUDE_CODE_USE_BEDROCK=false \
134170# ------------------------------------------------------------------------------
135171ENV GOOGLE_CLOUD_LOCATION=global \
136172 GOOGLE_GENAI_USE_VERTEXAI=true \
137- GEMINI_MODEL="gemini-2.5-flash"
138- RUN npm install -g @google/gemini-cli
173+ GEMINI_MODEL="gemini-3-flash-preview" \
174+ GEMINI_CLI_VERSION=0.22.5
175+
176+ RUN npm install -g "@google/gemini-cli@${GEMINI_CLI_VERSION}"
139177
140178# ------------------------------------------------------------------------------
141179# Go
0 commit comments