1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
# Use Ubuntu 22.04 LTS as base image
FROM ubuntu:22.04
# Avoid warnings by switching to noninteractive
ENV DEBIAN_FRONTEND=noninteractive
# Install dependencies with proper ordering
RUN apt-get update && apt-get install -y --no-install-recommends --no-install-suggests \
curl \
wget \
ca-certificates \
gnupg \
lsb-release \
apt-transport-https \
&& curl -fsSL https://deb.nodesource.com/setup_20.x | bash - \
&& curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
&& chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
&& apt-get update && apt-get install -y --no-install-recommends --no-install-suggests \
# Essential build tools
build-essential \
clang \
clang-tools \
lld \
cmake \
ninja-build \
mold \
ccache \
pkg-config \
# Qt5 development packages
qtbase5-dev \
qttools5-dev \
qttools5-dev-tools \
qtmultimedia5-dev \
qt5-qmake \
libqt5svg5-dev \
libqt5printsupport5 \
# Development tools
git \
gh \
# Debugging tools
gdb \
gdbserver \
lldb \
strace \
ltrace \
# Performance analysis tools
valgrind \
perf-tools-unstable \
linux-tools-generic \
# Testing and coverage tools
lcov \
# Python for build scripts
python3 \
python3-pip \
# Node.js
nodejs \
# Additional development utilities
htop \
iotop \
sysstat \
lsof \
net-tools \
tcpdump \
vim \
nano \
tmux \
screen
# Install Claude Code CLI
RUN npm install -g @anthropic-ai/claude-code
# Set up ccache for faster compilation
RUN /usr/sbin/update-ccache-symlinks 2>/dev/null || true \
&& ccache --set-config=max_size=2G \
&& mkdir -p /home/vscode/.ccache \
&& chown -R 1000:1000 /home/vscode/.ccache
# Add ccache to PATH for all users
ENV PATH="/usr/lib/ccache:${PATH}"
ENV CCACHE_DIR="/home/vscode/.ccache"
# Create workspace directory
RUN mkdir -p /workspace
# Set working directory
WORKDIR /workspace
# Set the default command
CMD ["/bin/bash"]
# Reset to default for subsequent operations
ENV DEBIAN_FRONTEND=dialog
|