1- FROM mcr.microsoft.com/devcontainers/base:jammy
1+ FROM mcr.microsoft.com/devcontainers/base:noble
22
33RUN export DEBIAN_FRONTEND=noninteractive && \
44 apt-get update && \
@@ -7,10 +7,12 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
77 bash-completion \
88 build-essential \
99 curl \
10+ docker.io \
1011 enchant-2 \
1112 gawk \
1213 gcc \
1314 genisoimage \
15+ gh \
1416 git \
1517 isomd5sum \
1618 libassuan-dev \
@@ -24,7 +26,6 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
2426 npm \
2527 pkg-config \
2628 plantuml \
27- python3.10-gdbm \
2829 shellcheck \
2930 tk-dev \
3031 tmux \
@@ -36,20 +37,54 @@ RUN export DEBIAN_FRONTEND=noninteractive && \
3637
3738USER vscode
3839
40+ ENV LANG=C.UTF-8
41+ ENV LC_ALL=C.UTF-8
42+
43+ # NOTE: Due to a bug in recent babel version, it cannot work with
44+ # default UTC timezone
45+ # See: https://github.com/python-babel/babel/issues/990
46+ RUN sudo ln -fs /usr/share/zoneinfo/UTC /etc/localtime
47+
48+ ENV PYENV_ROOT="/usr/local/pyenv"
49+ ENV PATH="$PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH"
50+
51+ # Install pyenv
52+ RUN sudo git clone https://github.com/pyenv/pyenv.git $PYENV_ROOT && \
53+ sudo chown $(id -u):$(id -g) -R $PYENV_ROOT && \
54+ printf 'export PYENV_ROOT=%s\n export PATH="$PYENV_ROOT/shims:$PYENV_ROOT/bin:$PATH"\n if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\n fi\n ' $PYENV_ROOT | sudo tee -a /etc/bash.bashrc -a /etc/zsh/zshrc
55+
56+ # Install pythons
57+ RUN pyenv install 3.10.12 3.6.15 2.7 && \
58+ pyenv global 3.10.12 3.6.15 2.7
59+
60+ # Install python libs
61+ RUN pip3 install --no-cache-dir --upgrade pip && \
62+ pip3.6 install --no-cache-dir --upgrade pip && \
63+ pip3 install --no-cache-dir "tox~=4.4.12" "pre-commit~=3.3.3" "virtualenv<20.22.0" "esbonio>=0.12.0" && \
64+ pip3.6 install --no-cache-dir "poetry~=1.1.15" && \
65+ pyenv rehash
66+
3967# Install helm
40- ARG HELM_VERSION=3.16 .2
68+ ARG HELM_VERSION=3.17 .2
4169
4270RUN curl --fail -L -o /tmp/helm.tar.gz https://get.helm.sh/helm-v${HELM_VERSION}-linux-amd64.tar.gz && \
4371 sudo tar -zxvf /tmp/helm.tar.gz -C /usr/local/bin/ linux-amd64/helm --strip-components 1 && \
4472 rm -rf /tmp/helm.tar.gz
4573
4674# Install go
4775ARG GO_VERSION=1.21.13
76+ ENV GOROOT="/usr/local/go"
77+ # NOTE: We use a custom GOPATH so that we can use it both for vscode and root users
78+ ENV GOPATH="/usr/lib/go"
79+ ENV GOBIN="$GOPATH/bin"
80+ ENV PATH="$GOBIN:$GOROOT/bin:$PATH"
4881
4982RUN curl --fail -L -o /tmp/go.tar.gz https://go.dev/dl/go${GO_VERSION}.linux-amd64.tar.gz && \
50- sudo tar -C /usr/local -xzf /tmp/go.tar.gz && \
51- sudo ln -s /usr/local/go/bin/go /usr/local/bin/go && \
52- sudo ln -s /usr/local/go/bin/gofmt /usr/local/bin/gofmt && \
83+ sudo tar -C /usr/local/ -xzf /tmp/go.tar.gz && \
84+ sudo mkdir -p $GOPATH && \
85+ sudo chown $(id -u):$(id -g) -R $GOROOT $GOPATH && \
86+ cd $GOROOT/bin && mv go go${GO_VERSION} && ln -s go${GO_VERSION} go && \
87+ printf 'export PATH="%s:%s/bin:$PATH"\n ' $GOBIN $GOROOT | sudo tee -a /etc/bash.bashrc -a /etc/zsh/zshrc && \
5388 rm -rf /tmp/go.tar.gz
5489
5590# Install golangci-lint
@@ -59,20 +94,8 @@ RUN curl --fail -L -o /tmp/install.sh https://raw.githubusercontent.com/golangci
5994 sudo bash /tmp/install.sh v${GOLANGCI_VERSION} && \
6095 rm -f /tmp/install.sh
6196
62- # Install pyenv
63- RUN git clone https://github.com/pyenv/pyenv.git ~/.pyenv && \
64- echo 'export PATH="$HOME/.pyenv/bin:$PATH"\n if command -v pyenv 1>/dev/null 2>&1; then\n eval "$(pyenv init -)"\n fi' | tee -a ~/.bashrc -a ~/.zshrc && \
65- export PATH="$HOME/.pyenv/bin:$PATH" && eval "$(pyenv init -)"
66-
67- # Install pythons
68- RUN ~/.pyenv/bin/pyenv install 3.10.12 3.6.15 && \
69- ~/.pyenv/bin/pyenv global 3.10.12 3.6.15
70-
71- # Install python libs
72- RUN ~/.pyenv/bin/pyenv exec pip install "tox~=4.4.12" "pre-commit~=3.3.3" "virtualenv<20.22.0" "esbonio>=0.12.0"
73-
74- # Install crane and gcrane
75- ARG CRANE_VERSION=0.20.2
97+ # Install crane
98+ ARG CRANE_VERSION=0.20.3
7699
77100RUN curl --fail -L -o /tmp/crane.tar.gz https://github.com/google/go-containerregistry/releases/download/v${CRANE_VERSION}/go-containerregistry_Linux_x86_64.tar.gz && \
78101 sudo tar -xzf /tmp/crane.tar.gz -C /usr/local/bin/ crane gcrane && \
@@ -84,7 +107,7 @@ ARG SKOPEO_VERSION=1.15.1
84107RUN curl --fail -L -o /tmp/skopeo.tar.gz https://github.com/containers/skopeo/archive/refs/tags/v${SKOPEO_VERSION}.tar.gz && \
85108 tar -zxvf /tmp/skopeo.tar.gz -C /tmp && \
86109 cd /tmp/skopeo-${SKOPEO_VERSION} && \
87- sudo make bin/skopeo && \
110+ sudo "PATH=$PATH" make bin/skopeo && \
88111 sudo mv bin/skopeo /usr/local/bin/ && \
89112 cd && \
90113 rm -rf /tmp/skopeo.tar.gz /tmp/skopeo-${SKOPEO_VERSION}
0 commit comments