Organize templates into per-stack folders
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
FROM codercom/enterprise-base:ubuntu
|
||||
|
||||
ARG DEBIAN_FRONTEND=noninteractive
|
||||
ARG TEA_VERSION=
|
||||
ARG TEA_ARCH=amd64
|
||||
ARG ROS_DISTRO=
|
||||
|
||||
USER root
|
||||
|
||||
ENV LANG=en_US.UTF-8
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get upgrade -y && \
|
||||
apt-get install -y \
|
||||
build-essential ca-certificates curl git gnupg jq locales pkg-config \
|
||||
software-properties-common sudo unzip wget zip && \
|
||||
locale-gen en_US en_US.UTF-8 && \
|
||||
update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN curl -fsSL https://get.docker.com | sh
|
||||
|
||||
RUN tea_version="${TEA_VERSION}" && \
|
||||
if [ -z "$tea_version" ]; then \
|
||||
tea_version="$(curl -fsSL https://gitea.com/api/v1/repos/gitea/tea/releases/latest | jq -r .tag_name)"; \
|
||||
fi && \
|
||||
tea_version="${tea_version#v}" && \
|
||||
curl -fsSL "https://dl.gitea.com/tea/${tea_version}/tea-${tea_version}-linux-${TEA_ARCH}" \
|
||||
-o /usr/local/bin/tea && \
|
||||
chmod 755 /usr/local/bin/tea
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y \
|
||||
clang clang-format clangd cmake gdb ninja-build valgrind && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN apt-get update && \
|
||||
apt-get install -y python3 python3-dev python3-pip python3-venv && \
|
||||
rm -rf /var/lib/apt/lists/* && \
|
||||
update-alternatives --install /usr/bin/python python /usr/bin/python3 1
|
||||
|
||||
RUN . /etc/os-release && \
|
||||
if [ -z "${ROS_DISTRO}" ]; then \
|
||||
case "${UBUNTU_CODENAME}" in \
|
||||
jammy) ROS_DISTRO=humble ;; \
|
||||
noble) ROS_DISTRO=jazzy ;; \
|
||||
*) echo "No ROS 2 distribution mapped for Ubuntu ${UBUNTU_CODENAME}, set the ROS_DISTRO build argument" >&2 && exit 1 ;; \
|
||||
esac; \
|
||||
fi && \
|
||||
add-apt-repository -y universe && \
|
||||
curl -fsSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key \
|
||||
-o /usr/share/keyrings/ros-archive-keyring.gpg && \
|
||||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu ${UBUNTU_CODENAME} main" \
|
||||
> /etc/apt/sources.list.d/ros2.list && \
|
||||
apt-get update && \
|
||||
apt-get install -y \
|
||||
python3-colcon-common-extensions python3-rosdep python3-vcstool \
|
||||
ros-dev-tools "ros-${ROS_DISTRO}-desktop" && \
|
||||
rosdep init && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN printf '%s\n' \
|
||||
'for ros_setup in /opt/ros/*/setup.bash; do' \
|
||||
' [ -r "$ros_setup" ] && . "$ros_setup"' \
|
||||
'done' \
|
||||
>> /etc/bash.bashrc
|
||||
|
||||
ENV UV_INSTALL_DIR=/opt/uv/bin
|
||||
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
|
||||
ENV CLAUDE_HOME=/opt/claude
|
||||
RUN mkdir -p ${CLAUDE_HOME} && \
|
||||
env HOME=${CLAUDE_HOME} bash -c 'curl -fsSL https://claude.ai/install.sh | bash' && \
|
||||
ln -s ${CLAUDE_HOME}/.local/bin/claude /usr/local/bin/claude && \
|
||||
chown -R coder:coder ${CLAUDE_HOME}
|
||||
|
||||
USER coder
|
||||
|
||||
ENV PATH="/opt/uv/bin:${PATH}"
|
||||
Reference in New Issue
Block a user