Skip to content

Commit 5ccabf2

Browse files
committed
feat(docker): default dev container to Ubuntu 24.04, keep 22.04 selectable
The Util/Docker dev environment isolates the CARLA UE5 toolchain (CMake, ninja, clang, Python, libtiff, libpng, glibc shims, UE5 prerequisites) from whatever the host happens to have installed. That isolation gives contributors three things that matter in practice: 1. Host independence: building CARLA does not require uninstalling or shadowing the system Python, system CMake, or other versions a host distro and other projects already rely on. 2. Reproducibility: a build or test failure inside the image reproduces bit-for-bit on a different machine by rebuilding the same image, instead of turning into a per-host investigation of CMake versions and LD_LIBRARY_PATH state. 3. Stable compilation across many computers: the recipe travels unchanged across Ubuntu 22.04, Ubuntu 24.04, Fedora, Pop_OS, etc., which keeps "works on my machine" from becoming a per-developer scavenger hunt. PR #9596 added host-side Ubuntu 24.04 build support (the __isoc23_strtol glibc shim, the libtiff5-dev to libtiff-dev swap, and the PEP 668 pip handling) but deferred the Docker side. This PR closes the developer-facing half of that gap so a contributor on a 24.04 host no longer gets a 22.04 image whose Base.Dockerfile fails on a missing libtiff5-dev package. Layout * The two Dockerfiles that the helper scripts actually invoke are reorganised into a per-distro layout: Util/Docker/22.04 and Util/Docker/24.04, each holding a linear, conditional-free Base.Dockerfile and Development.Dockerfile. Util/Docker/build.sh resolves --ubuntu-distro to the matching subdirectory and refuses values with no directory; Util/Docker/run.sh defaults to the ue5-24.04 image and container names. * Util/Docker/Release.Dockerfile has no caller anywhere in the repo (build.sh, run.sh, .github/workflows, Util/Tools/Deploy.{sh,bat}, the CMake graph) and is left untouched. Cleaning up that orphan is out of scope for this PR. * build.sh passes --build-context carla-root=<repo root> so each Dockerfile reads requirements.txt and PythonAPI/{examples,util}/ requirements.txt directly via COPY --from=carla-root, replacing the previous .tmp staging copy. 24.04 image * Base.Dockerfile installs libtiff-dev (the noble package name), upgrades pip with --ignore-installed (the dpkg-managed pip on noble has no RECORD file so a normal self-upgrade fails), and compiles Python 3.10.14 from source via Util/Docker/24.04/build_scripts/ build_cpython.sh so the Python API can target either 3.10 or 3.12 via -DPython_ROOT_DIR. CMake comes from apt and resolves to 3.28.3, which clears CARLA's current 3.27.2 minimum. * Development.Dockerfile reuses an existing group when the host docker GID collides with systemd-journal at GID 999 inside the noble base image, instead of failing groupadd. 22.04 image * Base.Dockerfile keeps its previous shape minus the upstream CMake tarball download. apt cmake on jammy is 3.22.1, below the project minimum, so users opting back into 22.04 must upgrade CMake themselves; the Dockerfile keeps a single apt install cmake line and the 22.04 path becomes best-effort. Docs and CHANGELOG * Docs/build_devcontainer.md documents the new default, adds a "Build for a different Ubuntu version" subsection, and updates every docker exec example plus the devcontainer.json snippet. * Docs/build_linux_ue5.md no longer says "Ubuntu 22.04 at minimum", it lists 22.04 and 24.04 as supported and points at the Docker fallback for any other host. * CHANGELOG.md gains one user-facing bullet. Out of scope CI workflow changes are intentionally not included. PR #9601 owns the _ci-ubuntu.yml matrix and is blocked on the carlasim/carla-builder image being available, which this PR produces locally so the same recipe can be published. Validated on Ubuntu 24.04 (RTX 50, driver 590.48): carla-base and carla-development images build clean, libcarla_test_server 44/44 and libcarla_test_client 58/58 pass, cmake --build Build --target package succeeds with both Python 3.10 and Python 3.12 wheels. Related: #9596 (host-side 24.04, merged), #9597 (umbrella issue, "24.04 CI image" checkbox), #9601 (CI matrix, open).
1 parent ffd9d27 commit 5ccabf2

10 files changed

Lines changed: 307 additions & 64 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
* Enabled the LibCarla GoogleTest suite (server + client) on ue5-dev and gated both in CI.
55
* Fixed Digital Twin Tool crashes on dense metropolitan OSM data, vegetation spawning inside driving lanes on rural maps, and one-way streets being silently excluded from generation (#9565, #9678)
66
* Added Ubuntu 24.04 support alongside Ubuntu 22.04
7+
* Docker dev environment now defaults to Ubuntu 24.04 and ships a per-distro Dockerfile layout under `Util/Docker/22.04/` and `Util/Docker/24.04/`. The 24.04 image installs Python 3.10 from source alongside the system Python 3.12 so the CARLA Python API can target either interpreter via `-DPython_ROOT_DIR`. Use `Util/Docker/build.sh --ubuntu-distro 22.04` to opt back into the older base.
78
* Added NVIDIA RTX 50 series (Blackwell) support with driver 570+ and CDI-based Docker instructions
89
* Fixed compiler warnings across 20 LibCarla files including signed/unsigned conversions, pessimizing moves, deep copies in range-for loops, and C-style casts (ported from ue4-dev)
910
* Fixed camera fx calculation in ROS2 CameraInfo, large map actor tagging, pedestrian bounding box using skeletal mesh bounds, and camera frame/timestamp consistency (ported from ue4-dev)

Docs/build_devcontainer.md

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# CARLA Docker Dev Environment (UE5)
22

3-
CARLA UE5 can be built inside a Docker container running Ubuntu 22.04. This is useful when your host OS (e.g., Ubuntu 24.04) does not meet UE5's compilation requirements. The container provides the correct toolchain and dependencies while you keep all source code on the host.
3+
CARLA UE5 can be built inside a Docker container running Ubuntu 24.04 (default) or Ubuntu 22.04. This is useful when your host OS does not meet UE5's compilation requirements, or when you want to validate the build on a specific Ubuntu version without changing your host. The container provides the correct toolchain and dependencies while you keep all source code on the host.
44

55
## Prerequisites
66

@@ -20,17 +20,27 @@ Util/Docker/build.sh
2020

2121
This builds two images:
2222

23-
1. `carla-base:ue5-22.04` — base image with all build dependencies
24-
2. `carla-development:ue5-22.04` — development image with user matching your host UID/GID
23+
1. `carla-base:ue5-24.04` — base image with all build dependencies
24+
2. `carla-development:ue5-24.04` — development image with user matching your host UID/GID
2525

2626
Options:
2727

2828
```sh
2929
Util/Docker/build.sh --force-rebuild # Rebuild from scratch (no cache)
3030
Util/Docker/build.sh --user 1000:1000 # Custom UID:GID
31-
Util/Docker/build.sh --ubuntu-distro 22.04 # Specify Ubuntu version (default: 22.04)
31+
Util/Docker/build.sh --ubuntu-distro 24.04 # Specify Ubuntu version (default: 24.04, also supports 22.04)
3232
```
3333

34+
### Build for a different Ubuntu version
35+
36+
The default is Ubuntu 24.04. To build the image (and the matching development container) on Ubuntu 22.04 instead, pass `--ubuntu-distro`:
37+
38+
```sh
39+
Util/Docker/build.sh --ubuntu-distro 22.04
40+
```
41+
42+
This produces `carla-base:ue5-22.04` and `carla-development:ue5-22.04`, with a separate `carla-development-ue5-22.04` volume so the two distros never share state. You can keep both images on the same host and switch between them by passing the matching `--ubuntu-distro` flag to `run.sh`.
43+
3444
---
3545

3646
## Run the container
@@ -66,7 +76,7 @@ Both are **bind mounts** — they point directly to the directories on your host
6676
- **Stop and restart** the container without losing any work — source code and build artifacts live on the host.
6777
- **Share the same UE5 build** across multiple containers or workflows.
6878

69-
The container itself only provides the Ubuntu 22.04 environment, toolchain, and dependencies. Your actual project data never lives inside the container.
79+
The container itself only provides the Ubuntu environment (24.04 by default, 22.04 if you passed `--ubuntu-distro 22.04` at build time), toolchain, and dependencies. Your actual project data never lives inside the container.
7080

7181
Use `--rebuild` to rebuild the image before running:
7282

@@ -146,28 +156,28 @@ cmake --build Build --target package
146156

147157
## Running commands from additional terminals
148158

149-
While the container is running, you can execute commands inside it from any terminal on the host using `docker exec`. The container name is `carla-development-ue5-22.04`.
159+
While the container is running, you can execute commands inside it from any terminal on the host using `docker exec`. The container name follows the pattern `carla-development-ue5-${UBUNTU_DISTRO}`, so the default 24.04 build is named `carla-development-ue5-24.04`. If you launched with `--ubuntu-distro 22.04`, swap the suffix in every example below to `22.04`.
150160

151161
**Open an interactive shell** in the running container:
152162

153163
```sh
154-
docker exec -it carla-development-ue5-22.04 bash
164+
docker exec -it carla-development-ue5-24.04 bash
155165
```
156166

157167
**Run a single command** without entering the container:
158168

159169
```sh
160170
# Build the Python API from a second terminal while the editor is running
161-
docker exec carla-development-ue5-22.04 cmake --build Build --target carla-python-api-install
171+
docker exec carla-development-ue5-24.04 cmake --build Build --target carla-python-api-install
162172

163173
# Build a package in the background
164-
docker exec carla-development-ue5-22.04 cmake --build Build --target package
174+
docker exec carla-development-ue5-24.04 cmake --build Build --target package
165175

166176
# Run a Python example against the running simulator
167-
docker exec carla-development-ue5-22.04 python3 PythonAPI/examples/generate_traffic.py
177+
docker exec carla-development-ue5-24.04 python3 PythonAPI/examples/generate_traffic.py
168178

169179
# Check build configuration
170-
docker exec carla-development-ue5-22.04 cmake --build Build --target help
180+
docker exec carla-development-ue5-24.04 cmake --build Build --target help
171181
```
172182

173183
This is useful for running parallel builds, launching Python scripts against a running simulator, or integrating with external tools (CI runners, editors, etc.) that need to invoke build commands inside the container.
@@ -181,9 +191,9 @@ Create `.devcontainer/devcontainer.json` in your CARLA repository:
181191
```json
182192
{
183193
"name": "CARLA UE5 Dev",
184-
"image": "carla-development:ue5-22.04",
194+
"image": "carla-development:ue5-24.04",
185195

186-
"initializeCommand": "./Util/Docker/build.sh --ubuntu-distro 22.04",
196+
"initializeCommand": "./Util/Docker/build.sh --ubuntu-distro 24.04",
187197

188198
"updateRemoteUserUID": false,
189199

@@ -201,19 +211,21 @@ Create `.devcontainer/devcontainer.json` in your CARLA repository:
201211
"runArgs": [
202212
"--rm",
203213
"--runtime", "nvidia",
204-
"--name", "carla-ue5-development-22.04",
214+
"--name", "carla-ue5-development-24.04",
205215
"--env", "NVIDIA_VISIBLE_DEVICES=all",
206216
"--env", "NVIDIA_DRIVER_CAPABILITIES=all",
207217
"--env", "CARLA_UNREAL_ENGINE_PATH=/workspaces/unreal-engine",
208218
"--env", "DISPLAY=${localEnv:DISPLAY}",
209219
"--volume", "/tmp/.X11-unix:/tmp/.X11-unix",
210220
"--volume", "${localEnv:CARLA_UNREAL_ENGINE_PATH}:/workspaces/unreal-engine",
211-
"--mount", "source=carla-development-ue5-22.04,target=/home/carla",
221+
"--mount", "source=carla-development-ue5-24.04,target=/home/carla",
212222
"--gpus", "all"
213223
]
214224
}
215225
```
216226

227+
To target Ubuntu 22.04 instead, replace every `24.04` suffix above with `22.04` (image tag, container name, mount source) and pass `--ubuntu-distro 22.04` in `initializeCommand`.
228+
217229
---
218230

219231
## Tips & Known Issues

Docs/build_linux_ue5.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# Building CARLA in Linux with Unreal Engine 5.5
22

33
!!! note
4-
The Unreal Engine 5 version of CARLA requires Ubuntu version 22.04 at minimum. It has not been configured to build on older Ubuntu versions.
4+
The Unreal Engine 5 version of CARLA supports Ubuntu 22.04 and Ubuntu 24.04. Older Ubuntu versions are not configured to build.
55

66
!!! note
7-
If you are using a different Ubuntu version (e.g., 24.04) and experiencing compilation issues, you can use the Docker-based development environment to build CARLA inside an Ubuntu 22.04 container. See [CARLA Docker Dev Environment (UE5)](build_devcontainer.md) for instructions.
7+
If your host OS does not match either supported Ubuntu version (or you want to validate against a specific one without changing your host), use the Docker-based development environment. The `Util/Docker/build.sh` script defaults to Ubuntu 24.04 and accepts `--ubuntu-distro 22.04` to build the older variant. See [CARLA Docker Dev Environment (UE5)](build_devcontainer.md) for instructions.
88

99
* __[Set up the environment](#set-up-the-environment)__
1010
* __[Build and run CARLA UE5](#build-and-run-carla-ue5)__
Lines changed: 12 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
ARG UBUNTU_DISTRO="22.04"
2-
3-
FROM ubuntu:${UBUNTU_DISTRO}
4-
5-
ARG UBUNTU_DISTRO
1+
FROM ubuntu:22.04
62

73
# Disable interactive prompts during package installation.
84
ENV DEBIAN_FRONTEND=noninteractive
@@ -20,7 +16,7 @@ RUN apt-get update && \
2016
ENV LANG=en_US.UTF-8
2117
ENV LC_ALL=en_US.UTF-8
2218

23-
COPY .tmp/requirements.txt /tmp/requirements.txt
19+
COPY --from=carla-root requirements.txt /tmp/requirements.txt
2420

2521
# ---------------------------
2622
# Install CARLA prerequisites
@@ -31,10 +27,11 @@ USER root
3127
# Core build tools and UE5-specific dependencies:
3228
# - build-essential make ninja-build: core compilation tools
3329
# - libvulkan1: Vulkan runtime needed by Unreal Engine for rendering
34-
# - python3 python3-dev python3-pip python-is-python3: Python runtime, headers, package manager
30+
# - python3 python3-dev python3-pip python-is-python3: system Python (3.10 on jammy), headers, pip
3531
# - autoconf libtool: required for building dependencies from source
3632
# - wget curl rsync unzip git git-lfs: essential CLI tools used in CARLA build scripts
37-
# - libpng-dev libtiff5-dev libjpeg-dev: image libraries for CARLA's Python API
33+
# - libpng-dev libtiff-dev libjpeg-dev: image libraries for CARLA's Python API
34+
# (libtiff-dev on 22.04 is a transitional metapackage that pulls libtiff5-dev)
3835
# - tzdata sed libxml2-dev: build utilities
3936
# - libnss3-dev libatk-bridge2.0-dev libxkbcommon-dev libgbm-dev: required by UE5 editor
4037
# - libpango1.0-dev libasound2-dev: display and audio support for UE5
@@ -57,7 +54,7 @@ RUN apt-get update && \
5754
git \
5855
git-lfs \
5956
libpng-dev \
60-
libtiff5-dev \
57+
libtiff-dev \
6158
libjpeg-dev \
6259
tzdata \
6360
sed \
@@ -73,13 +70,12 @@ RUN apt-get update && \
7370
# Enable git lfs
7471
RUN git lfs install
7572

76-
# Minimum required version is 3.28.0.
77-
# Install a newer version manually, as Ubuntu 22.04 includes an outdated CMake from the upstream repository.
78-
RUN curl -L -O https://github.com/Kitware/CMake/releases/download/v3.28.3/cmake-3.28.3-linux-x86_64.tar.gz \
79-
&& mkdir -p /opt \
80-
&& tar -xzf cmake-3.28.3-linux-x86_64.tar.gz -C /opt \
81-
&& rm -rf cmake-3.28.3-linux-x86_64.tar.gz
82-
ENV PATH=/opt/cmake-3.28.3-linux-x86_64/bin:$PATH
73+
# Install CMake from the distro's apt repository. Ubuntu 22.04 ships CMake 3.22.1,
74+
# which is below CARLA's current minimum (3.27.2), so users on 22.04 may need to
75+
# upgrade CMake out-of-band before running `cmake` against this repo.
76+
RUN apt-get update \
77+
&& apt-get install -y cmake \
78+
&& rm -rf /var/lib/apt/lists/*
8379

8480
# SDL2 libraries:
8581
# Required for Unreal Engine to interact with the display.
@@ -91,10 +87,6 @@ RUN packages='libsdl2-dev libsdl2-2.0' \
9187
# -------------------
9288
# Install pip packages
9389
# -------------------
94-
# Allow pip to install packages system-wide (required on Ubuntu 22.04 due to PEP 668).
95-
RUN echo '[global]' > /etc/pip.conf && \
96-
echo 'break-system-packages = true' >> /etc/pip.conf
97-
9890
RUN python3 -m pip install --upgrade pip \
9991
&& python3 -m pip install -r /tmp/requirements.txt \
10092
&& rm /tmp/requirements.txt
Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
ARG UBUNTU_DISTRO="22.04"
2-
3-
FROM carla-base:ue5-${UBUNTU_DISTRO}
4-
5-
ARG UBUNTU_DISTRO
1+
FROM carla-base:ue5-22.04
62

73
ARG UID="1000"
84
ARG GID="1000"
@@ -31,27 +27,22 @@ RUN packages="vulkan-tools fontconfig xdg-user-dirs" && \
3127
ENV XDG_RUNTIME_DIR=/run/user/${UID}
3228

3329
# Install runtime python libraries (to run examples and utils)
34-
COPY .tmp/examples_requirements.txt /tmp/examples_requirements.txt
35-
COPY .tmp/util_requirements.txt /tmp/util_requirements.txt
30+
COPY --from=carla-root PythonAPI/examples/requirements.txt /tmp/examples_requirements.txt
31+
COPY --from=carla-root PythonAPI/util/requirements.txt /tmp/util_requirements.txt
3632

3733
RUN python3 -m pip install -r /tmp/examples_requirements.txt \
3834
&& python3 -m pip install -r /tmp/util_requirements.txt \
3935
&& rm /tmp/examples_requirements.txt /tmp/util_requirements.txt
4036

41-
# Starting with Ubuntu 23.04, official Docker images include a default `ubuntu` user with UID 1000.
42-
# This can cause conflicts when remapping the container's UID/GID to match the host user.
43-
RUN id -u ${UID} &>/dev/null \
44-
&& userdel -r $(getent passwd ${UID} | cut -d: -f1) \
45-
|| echo ""
46-
4737
# Create a dedicated non-root user and group to limit root access.
4838
# Add the user to the sudoers group and configure it password-less.
4939
RUN groupadd --gid ${GID} ${USERNAME} \
5040
&& useradd -m --uid ${UID} -g ${USERNAME} ${USERNAME} \
5141
&& passwd -d ${USERNAME} \
5242
&& usermod -a -G sudo ${USERNAME}
5343

54-
# Add the carla user to the docker group to allow running Docker commands without sudo when bind-mounting the Docker socket.
44+
# Add the carla user to the docker group to allow running Docker commands without sudo
45+
# when bind-mounting the Docker socket.
5546
RUN groupadd -g ${DOCKER_GID} docker \
5647
&& usermod -a -G docker ${USERNAME}
5748

Util/Docker/24.04/Base.Dockerfile

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
FROM ubuntu:24.04
2+
3+
# Disable interactive prompts during package installation.
4+
ENV DEBIAN_FRONTEND=noninteractive
5+
6+
WORKDIR /
7+
8+
# ---------------------------
9+
# Configure UTF-8 locale
10+
# ---------------------------
11+
# Required by CMake's archive extraction for filenames with non-ASCII characters (e.g., Boost).
12+
RUN apt-get update && \
13+
apt-get install -y locales && \
14+
locale-gen en_US.UTF-8 && \
15+
rm -rf /var/lib/apt/lists/*
16+
ENV LANG=en_US.UTF-8
17+
ENV LC_ALL=en_US.UTF-8
18+
19+
COPY --from=carla-root requirements.txt /tmp/requirements.txt
20+
COPY build_scripts /tmp/build_scripts
21+
22+
# ---------------------------
23+
# Install CARLA prerequisites
24+
# ---------------------------
25+
# https://carla.readthedocs.io/en/latest/build_linux_ue5/
26+
USER root
27+
28+
# Core build tools and UE5-specific dependencies:
29+
# - build-essential make ninja-build: core compilation tools
30+
# - libvulkan1: Vulkan runtime needed by Unreal Engine for rendering
31+
# - python3 python3-dev python3-pip python-is-python3: system Python (3.12 on noble), headers, pip
32+
# - autoconf libtool: required for building dependencies from source
33+
# - wget curl rsync unzip git git-lfs: essential CLI tools used in CARLA build scripts
34+
# - libpng-dev libtiff-dev libjpeg-dev: image libraries for CARLA's Python API
35+
# - tzdata sed libxml2-dev: build utilities
36+
# - libnss3-dev libatk-bridge2.0-dev libxkbcommon-dev libgbm-dev: required by UE5 editor
37+
# - libpango1.0-dev libasound2-dev: display and audio support for UE5
38+
RUN apt-get update && \
39+
apt-get install -y \
40+
build-essential \
41+
make \
42+
ninja-build \
43+
libvulkan1 \
44+
python3 \
45+
python3-dev \
46+
python3-pip \
47+
python-is-python3 \
48+
autoconf \
49+
libtool \
50+
wget \
51+
curl \
52+
rsync \
53+
unzip \
54+
git \
55+
git-lfs \
56+
libpng-dev \
57+
libtiff-dev \
58+
libjpeg-dev \
59+
tzdata \
60+
sed \
61+
libxml2-dev \
62+
libnss3-dev \
63+
libatk-bridge2.0-dev \
64+
libxkbcommon-dev \
65+
libgbm-dev \
66+
libpango1.0-dev \
67+
libasound2-dev \
68+
&& rm -rf /var/lib/apt/lists/*
69+
70+
# Enable git lfs
71+
RUN git lfs install
72+
73+
# Install CMake from the distro's apt repository. Ubuntu 24.04 ships CMake 3.28.3,
74+
# which clears CARLA's minimum (3.27.2) without any extra apt source or tarball.
75+
RUN apt-get update \
76+
&& apt-get install -y cmake \
77+
&& rm -rf /var/lib/apt/lists/*
78+
79+
# SDL2 libraries:
80+
# Required for Unreal Engine to interact with the display.
81+
RUN packages='libsdl2-dev libsdl2-2.0' \
82+
&& apt-get update \
83+
&& apt-get install -y $packages \
84+
&& rm -rf /var/lib/apt/lists/*
85+
86+
# -------------------
87+
# Install pip packages
88+
# -------------------
89+
# Allow pip to install packages system-wide (Ubuntu 24.04 ships the PEP 668 marker;
90+
# opt out so pip can install into the system site-packages).
91+
RUN echo '[global]' > /etc/pip.conf && \
92+
echo 'break-system-packages = true' >> /etc/pip.conf
93+
94+
# `--ignore-installed` is required on Ubuntu 24.04: the system-shipped pip is
95+
# installed via dpkg and lacks a RECORD file, so a normal pip self-upgrade fails
96+
# with "Cannot uninstall pip 24.0". Layering the new pip on top sidesteps the
97+
# uninstall step.
98+
RUN python3 -m pip install --upgrade --ignore-installed pip \
99+
&& python3 -m pip install -r /tmp/requirements.txt
100+
101+
# ---------------------------
102+
# Install Python 3.10 from source (alongside system 3.12)
103+
# ---------------------------
104+
# CARLA's Python API supports building against multiple interpreters via
105+
# -DPython_ROOT_DIR. Ubuntu 24.04's apt only provides Python 3.12, so compile
106+
# 3.10 from source via `make altinstall` and install the shared CARLA
107+
# requirements against it. Result: /usr/local/bin/python3.10 sits alongside
108+
# /usr/bin/python3.12 and is selectable at configure time.
109+
RUN apt-get update && \
110+
apt-get install -y --no-install-recommends \
111+
libbz2-dev \
112+
libffi-dev \
113+
libgdbm-dev \
114+
libgdbm-compat-dev \
115+
liblzma-dev \
116+
libncurses-dev \
117+
libreadline-dev \
118+
libsqlite3-dev \
119+
libssl-dev \
120+
tk-dev \
121+
uuid-dev \
122+
zlib1g-dev \
123+
pkg-config && \
124+
bash /tmp/build_scripts/build_cpython.sh --python-version 3.10.14 && \
125+
python3.10 -m pip install --upgrade --ignore-installed pip && \
126+
python3.10 -m pip install -r /tmp/requirements.txt && \
127+
rm -rf /var/lib/apt/lists/*
128+
129+
RUN rm -f /tmp/requirements.txt && rm -rf /tmp/build_scripts
130+
131+
USER root

0 commit comments

Comments
 (0)