@@ -2,85 +2,79 @@ FROM ubuntu:jammy
22
33COPY first-run-notice.txt /tmp/scripts/
44
5- RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
6- # Restore man command
7- && yes | unminimize 2>&1
8-
9- ENV LANG="C.UTF-8"
5+ ENV LANG="C.UTF-8" \
6+ DEBIAN_FRONTEND=noninteractive \
7+ SHELL=/bin/bash \
8+ DOCKER_BUILDKIT=1
109
11- # Install basic build tools
10+ # Install all packages in a single RUN command to reduce layers
1211RUN apt-get update \
1312 && apt-get upgrade -y \
14- && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
13+ && apt-get install -y --no-install-recommends \
14+ # Essential build tools
1515 make \
16- unzip \
17- # The tools in this package are used when installing packages for Python
1816 build-essential \
19- swig3.0 \
20- # Required for Microsoft SQL Server
21- unixodbc-dev \
22- # Required for PostgreSQL
23- libpq-dev \
24- # Required for mysqlclient
25- default-libmysqlclient-dev \
26- # Required for ts
27- moreutils \
28- rsync \
17+ cmake \
18+ curl \
19+ git \
20+ unzip \
2921 zip \
30- libgdiplus \
22+ rsync \
3123 jq \
24+ xz-utils \
25+ # Database drivers (only what's actually needed)
26+ libpq-dev \
27+ default-libmysqlclient-dev \
28+ sqlite3 \
29+ libsqlite3-dev \
30+ # Development tools
31+ python3-dev \
3232 python3-pip \
33- # .NET Core related pre-requisites
34- libc6 \
35- libgcc1 \
36- libgssapi-krb5-2 \
37- libncurses6 \
38- liblttng-ust1 \
33+ vim \
34+ protobuf-compiler \
35+ # Essential libraries
3936 libssl-dev \
37+ libgcc1 \
4038 libstdc++6 \
4139 zlib1g \
4240 libuuid1 \
43- libunwind8 \
44- sqlite3 \
45- libsqlite3-dev \
46- software-properties-common \
47- tk-dev \
4841 uuid-dev \
49- curl \
50- gettext \
42+ && apt-get autoremove -y \
43+ && apt-get clean -y \
5144 && rm -rf /var/lib/apt/lists/* \
52- # This is the folder containing 'links' to benv and build script generator
53- && apt-get update \
54- && apt-get upgrade -y \
55- && add-apt-repository universe \
56- && rm -rf /var/lib/apt/lists/*
57-
58- # Verify expected build and debug tools are present
59- RUN apt-get update \
60- && apt-get -y install build-essential cmake cppcheck valgrind clang clang-format lldb llvm gdb python3-dev \
61- # Install tools and shells not in common script
62- && apt-get install -yq vim vim-doc xtail software-properties-common libsecret-1-dev \
63- # Install additional tools (useful for 'puppeteer' project)
64- && apt-get install -y --no-install-recommends libnss3 libnspr4 libatk-bridge2.0-0 libatk1.0-0 libx11-6 libpangocairo-1.0-0 \
65- libx11-xcb1 libcups2 libxcomposite1 libxdamage1 libxfixes3 libpango-1.0-0 libgbm1 libgtk-3-0 \
66- # Clean up
67- && apt-get autoremove -y && apt-get clean -y \
6845 # Move first run notice to right spot
6946 && mkdir -p "/usr/local/etc/vscode-dev-containers/" \
70- && mv -f /tmp/scripts/first-run-notice.txt /usr/local/etc/vscode-dev-containers/
47+ && mv -f /tmp/scripts/first-run-notice.txt /usr/local/etc/vscode-dev-containers/ \
48+ && rm -rf /tmp/scripts
7149
72- # Default to bash shell (other shells available at /usr/bin/fish and /usr/bin/zsh)
73- ENV SHELL=/bin/bash \
74- DOCKER_BUILDKIT=1
50+ # Install Go
51+ RUN curl -fsSL https://golang.org/dl/go1.24.6.linux-$(dpkg --print-architecture).tar.gz | tar -C /usr/local -xzf -
52+
53+ # Install Node.js and npm manually (more reliable for multi-platform builds)
54+ RUN ARCH=$(dpkg --print-architecture) \
55+ && case $ARCH in \
56+ amd64) NODE_ARCH="x64" ;; \
57+ arm64) NODE_ARCH="arm64" ;; \
58+ *) echo "Unsupported architecture: $ARCH" && exit 1 ;; \
59+ esac \
60+ && curl -fsSL "https://nodejs.org/dist/v22.11.0/node-v22.11.0-linux-${NODE_ARCH}.tar.xz" | tar -C /usr/local --strip-components=1 -xJ \
61+ && npm install -g yarn
62+
63+ # Set up Go environment
64+ ENV PATH=$PATH:/usr/local/go/bin
65+ ENV GOPATH=/go
66+ ENV CGO_ENABLED=1
7567
76- # Remove scripts now that we're done with them
77- RUN apt-get clean -y && rm -rf /tmp/scripts
68+ # Create go workspace
69+ RUN mkdir -p /go/bin /go/src /go/pkg
70+
71+ # Install Atlas for MySQL migration
72+ RUN curl -sSf https://atlasgo.sh | sh -s -- -y
7873
7974# Mount for docker-in-docker
8075VOLUME [ "/var/lib/docker" ]
8176
82- # Fire Docker/Moby script if needed
83- ENTRYPOINT [ "/usr/local/share/docker-init.sh" , "/usr/local/share/ssh-init.sh" ]
77+ # Simple entrypoint for dev container
8478CMD [ "sleep" , "infinity" ]
8579
8680# [Optional] Install debugger for development of Codespaces - Not in resulting image by default
@@ -90,5 +84,3 @@ RUN if [ -z $DeveloperBuild ]; then \
9084 else \
9185 curl -sSL https://aka.ms/getvsdbgsh | bash /dev/stdin -v latest -l /vsdbg ; \
9286 fi
93- # Install the Atlas for MySQL migration
94- RUN curl -sSf https://atlasgo.sh | sh -s -- -y
0 commit comments