Skip to content

Commit 73f5ef2

Browse files
committed
updated devcontainer
Signed-off-by: Dmytro Rashko <dmitriy.rashko@amdocs.com>
1 parent 802f95b commit 73f5ef2

3 files changed

Lines changed: 41 additions & 37 deletions

File tree

.devcontainer/Dockerfile

Lines changed: 34 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ ARG DOCKER_REGISTRY=ghcr.io
33
ARG TOOLS_UV_VERSION=latest
44

55
### STAGE 1: base image
6-
FROM $DOCKER_REGISTRY/astral-sh/uv:${TOOLS_UV_VERSION}-bookworm-slim AS base-os
7-
ARG TOOLS_NODE_VERSION
6+
FROM $DOCKER_REGISTRY/astral-sh/uv:${TOOLS_UV_VERSION}-debian-slim AS base-os
87

98
#ENVIRONMENT VARIABLES
109
ENV DEBIAN_FRONTEND=noninteractive
@@ -22,6 +21,7 @@ RUN mkdir -p /etc/apt/keyrings \
2221
&& ln -sf /usr/bin/python3 /usr/bin/python
2322

2423
FROM base-os AS base
24+
ARG TOOLS_NODE_VERSION
2525

2626
# Install python
2727
RUN uv python install 3.12
@@ -40,24 +40,20 @@ RUN mkdir -p $NVM_DIR \
4040
&& nvm install $TOOLS_NODE_VERSION \
4141
&& nvm use $TOOLS_NODE_VERSION \
4242
&& which node && node --version \
43-
&& ln -sf $NVM_DIR/versions/node/v$TOOLS_NODE_VERSION/bin/node /usr/bin/node
43+
&& ln -sf $NVM_DIR/versions/node/v$TOOLS_NODE_VERSION/bin/node /usr/bin/node \
44+
&& ln -sf $NVM_DIR/versions/node/v$TOOLS_NODE_VERSION/bin/npm /usr/bin/npm \
45+
&& ln -sf $NVM_DIR/versions/node/v$TOOLS_NODE_VERSION/bin/npx /usr/bin/npx
4446

45-
### STAGE 2: build + tools
46-
FROM --platform=$BUILDPLATFORM base-os AS builder
47+
### STAGE 2: build + tools (extends base to inherit Node.js and Python)
48+
FROM --platform=$BUILDPLATFORM base AS builder
4749

4850
ARG TARGETARCH
49-
ARG TOOLS_ISTIO_VERSION
50-
ARG TOOLS_ARGO_CD_VERSION
5151

5252
RUN apt-get update && apt-get install -y --no-install-recommends \
5353
bsdmainutils \
5454
build-essential \
55-
ca-certificates \
5655
conntrack \
57-
curl \
5856
gettext-base \
59-
git \
60-
gnupg \
6157
gnupg2 \
6258
htop \
6359
iperf3 \
@@ -71,13 +67,11 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
7167
lsof \
7268
net-tools \
7369
netcat-openbsd \
74-
python3 \
7570
python3-dev \
7671
python3-pip \
7772
python3-venv \
7873
sshuttle \
7974
tcpdump \
80-
wget \
8175
zsh \
8276
&& curl -fsSL https://get.docker.com -o get-docker.sh \
8377
&& sh get-docker.sh \
@@ -87,30 +81,35 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
8781

8882
### STAGE 3 add golang
8983
FROM builder AS node-python-golang
84+
ARG TARGETARCH
9085
ARG TOOLS_GO_VERSION
91-
ARG TOOLS_K9S_VERSION
92-
ARG TOOLS_KIND_VERSION
93-
ARG TOOLS_ISTIO_VERSION
94-
ARG TOOLS_ARGO_CD_VERSION
95-
ARG TOOLS_KUBECTL_VERSION
9686
ARG ARCH=${TARGETARCH:-amd64}
9787

9888
#ENVIRONMENT VARIABLES
99-
ENV DEBIAN_FRONTEND=noninteractive
10089
ENV GO111MODULE=on
10190
ENV GOTOOLCHAIN=local
102-
ENV GOPROXY="http://proxy.golang.org"
103-
ENV PATH=$PATH:/usr/local/go/bin
91+
ENV GOPATH=/root/go
92+
ENV GOBIN=$GOPATH/bin
93+
ENV GOPROXY="https://proxy.golang.org,direct"
94+
ENV PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
10495

10596
RUN --mount=type=cache,target=/cache,rw \
10697
wget -q --show-progress -P /cache https://golang.org/dl/go${TOOLS_GO_VERSION}.linux-${ARCH}.tar.gz && \
10798
tar -C /usr/local -xzf /cache/go${TOOLS_GO_VERSION}.linux-${ARCH}.tar.gz
10899

109-
### STAGE 3 add tools
100+
### STAGE 4 add tools
110101
FROM --platform=$BUILDPLATFORM node-python-golang AS tools-node-python-golang
111102

103+
ARG TARGETARCH
104+
ARG ARCH=${TARGETARCH:-amd64}
105+
ARG TOOLS_K9S_VERSION
106+
ARG TOOLS_KIND_VERSION
107+
ARG TOOLS_ISTIO_VERSION
108+
ARG TOOLS_ARGO_CD_VERSION
109+
ARG TOOLS_KUBECTL_VERSION
110+
112111
# Install kubectl argo plugin
113-
RUN curl -o /usr/local/bin/kubectl-argo-rollouts -L https://github.com/argoproj/argo-rollouts/releases/${TOOLS_ARGO_CD_VERSION}/download/kubectl-argo-rollouts-linux-${ARCH} \
112+
RUN curl -o /usr/local/bin/kubectl-argo-rollouts -L https://github.com/argoproj/argo-rollouts/releases/download/${TOOLS_ARGO_CD_VERSION}/kubectl-argo-rollouts-linux-${ARCH} \
114113
&& chmod +x /usr/local/bin/kubectl-argo-rollouts
115114

116115
#Install Helm
@@ -125,7 +124,7 @@ RUN curl -L https://istio.io/downloadIstio | ISTIO_VERSION=${TOOLS_ISTIO_VERSION
125124
&& rm -rf istio-*
126125

127126
# Install kind
128-
RUN curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.27.0/kind-$(uname)-${ARCH} \
127+
RUN curl -Lo ./kind https://kind.sigs.k8s.io/dl/v${TOOLS_KIND_VERSION}/kind-linux-${ARCH} \
129128
&& chmod +x ./kind \
130129
&& mv ./kind /usr/local/bin/
131130

@@ -136,14 +135,20 @@ RUN curl -LO https://github.com/derailed/k9s/releases/download/v${TOOLS_K9S_VERS
136135
&& chmod +x /usr/local/bin/k9s \
137136
&& rm -f k9s_Linux_${ARCH}.tar.gz
138137

139-
# Install kubectl \
140-
RUN curl -Lo /usr/local/bin/kubectl "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/${ARCH}/kubectl" \
138+
# Install kubectl
139+
RUN curl -Lo /usr/local/bin/kubectl "https://dl.k8s.io/release/v${TOOLS_KUBECTL_VERSION}/bin/linux/${ARCH}/kubectl" \
141140
&& chmod +x /usr/local/bin/kubectl
142141

143-
RUN sh -c "$(wget https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" \
144-
sh -c "$(curl -fsSL https://starship.rs/install.sh)" -- --yes \
142+
RUN sh -c "$(wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh -O -)" \
143+
&& STARSHIP_SUFFIX=$(case ${ARCH} in amd64) echo x86_64-unknown-linux-gnu;; arm64) echo aarch64-unknown-linux-musl;; esac) \
144+
&& curl -Lo starship.tar.gz "https://github.com/starship/starship/releases/latest/download/starship-${STARSHIP_SUFFIX}.tar.gz" \
145+
&& tar -xzf starship.tar.gz -C /usr/local/bin/ \
146+
&& rm starship.tar.gz \
145147
&& mkdir -p /root/.config \
146148
&& git config --global core.excludesfile /root/.gitignore_global \
147149
&& echo "**/.idea/" > /root/.gitignore_global
148150

149-
ENTRYPOINT ["zsh"]
151+
# Install Claude
152+
RUN curl -fsSL https://claude.ai/install.sh | bash
153+
154+
ENTRYPOINT ["zsh"]

.devcontainer/devcontainer.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,18 @@
33
"build": {
44
"dockerfile": "Dockerfile",
55
"args": {
6-
"TOOLS_GO_VERSION": "1.25.5",
6+
"TOOLS_GO_VERSION": "1.26.1",
77
"TOOLS_NODE_VERSION": "24.13.0",
8-
"TOOLS_UV_VERSION": "0.7.2",
8+
"TOOLS_UV_VERSION": "0.10.4",
99
"TOOLS_K9S_VERSION": "0.50.4",
1010
"TOOLS_KIND_VERSION": "0.27.0",
1111
"TOOLS_ISTIO_VERSION": "1.26.0",
12+
"TOOLS_ARGO_CD_VERSION": "v1.8.4",
1213
"TOOLS_KUBECTL_VERSION": "1.33.4"
1314
}
1415
},
1516
"features": {
16-
"ghcr.io/devcontainers/features/docker-outside-of-docker:1": {},
17+
"ghcr.io/devcontainers/features/docker-outside-of-docker:1": { "moby": false },
1718
"ghcr.io/mpriscella/features/kind:1": {}
1819
},
1920
"customizations": {
@@ -35,8 +36,7 @@
3536
"ms-vscode.vscode-typescript-next",
3637
"ms-azuretools.vscode-containers",
3738
"ms-windows-ai-studio.windows-ai-studio",
38-
"GitHub.copilot",
39-
"GitHub.copilot-chat",
39+
"vscode:extension/anthropic.claude-code",
4040
"Catppuccin.catppuccin-vsc",
4141
"Catppuccin.catppuccin-vsc-icons"
4242
]

Makefile

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -432,9 +432,8 @@ kagent-addon-install: use-kind-cluster
432432

433433
.PHONY: open-dev-container
434434
open-dev-container:
435-
@echo "Opening dev container..."
436-
devcontainer build .
437-
@devcontainer open .
435+
@echo "Building and starting dev container..."
436+
devcontainer up --workspace-folder .
438437

439438
.PHONY: otel-local
440439
otel-local:

0 commit comments

Comments
 (0)