sumo docker镜像打包
·
sumo docker镜像打包
1 构建Dockerfile
# 使用Ubuntu 20.04作为基础镜像,更好支持Python 3.8
FROM ubuntu:20.04
# 设置非交互模式,避免安装过程中的交互提示
ENV DEBIAN_FRONTEND=noninteractive
# 更新包列表并安装基础依赖
RUN apt-get update && apt-get install -y \
build-essential \
cmake \
git \
libxerces-c3.2 \
libxerces-c-dev \
libfox-1.6-0 \
libfox-1.6-dev \
libgdal-dev \
libproj-dev \
libgl2ps-dev \
libeigen3-dev \
software-properties-common \
wget \
curl \
&& rm -rf /var/lib/apt/lists/*
# 添加Python 3.8仓库并安装
RUN add-apt-repository ppa:deadsnakes/ppa && \
apt-get update && \
apt-get install -y python3.8 python3.8-dev python3.8-distutils && \
rm -rf /var/lib/apt/lists/*
# 设置Python 3.8为默认Python3
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
# 安装pip for Python 3.8 - 使用Python 3.8专用版本
RUN set -eux; \
# 使用Python 3.8专用的get-pip.py版本
PIP_BOOTSTRAP_URL="https://bootstrap.pypa.io/pip/3.8/get-pip.py"; \
ALTERNATIVE_URL="https://pypi.tuna.tsinghua.edu.cn/packages/source/p/pip/get-pip.py"; \
\
# 尝试官方源下载
if ! wget "${PIP_BOOTSTRAP_URL}" -O get-pip.py; then \
echo "Failed to download from ${PIP_BOOTSTRAP_URL}, trying alternative source"; \
wget "${ALTERNATIVE_URL}" -O get-pip.py; \
fi; \
\
# 确保文件存在
if [ ! -f "get-pip.py" ]; then \
echo "Failed to download get-pip.py"; \
exit 1; \
fi; \
\
# 安装pip
python3 get-pip.py; \
\
# 验证安装
pip3 --version; \
\
# 清理
rm -f get-pip.py
# 设置SUMO版本
ENV SUMO_VERSION=1.24.0
# 下载并编译SUMO
RUN wget https://downloads.sourceforge.net/project/sumo/sumo/version%20${SUMO_VERSION}/sumo-src-${SUMO_VERSION}.tar.gz \
&& tar xzf sumo-src-${SUMO_VERSION}.tar.gz \
&& cd sumo-${SUMO_VERSION} \
&& mkdir build \
&& cd build \
&& cmake .. \
&& make -j$(nproc) \
&& make install \
&& cd ../.. \
&& rm -rf sumo-${SUMO_VERSION} sumo-src-${SUMO_VERSION}.tar.gz
# 设置SUMO_HOME环境变量
ENV SUMO_HOME=/usr/local/share/sumo
# 将SUMO的bin目录添加到PATH
ENV PATH=$SUMO_HOME/bin:$PATH
# 配置pip镜像源,提高下载速度
RUN pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 安装指定版本的Python库
RUN pip3 install --no-cache-dir \
MarkupSafe==2.1.5 \
async-timeout==5.0.1 \
blinker==1.8.2 \
certifi==2025.8.3 \
click==8.1.8 \
colorama==0.4.6 \
eclipse-sumo==1.24.0 \
flask==3.0.3 \
importlib-metadata==8.5.0 \
itsdangerous==2.2.0 \
jinja2==3.1.6 \
libsumo==1.23.1 \
loguru==0.7.3 \
networkx==3.1 \
pip==23.2.1 \
pyproj==3.5.0 \
redis==6.1.1 \
setuptools==68.2.0 \
sumolib==1.24.0 \
traci==1.24.0 \
werkzeug==3.0.6 \
wheel==0.41.2 \
win32-setctime==1.2.0 \
zipp==3.20.2\
numpy\
websocket\
kafka-python
# 设置工作目录
WORKDIR /sumo
# 容器启动时默认进入bash
CMD ["/bin/bash"]
2 镜像构建
docker build -t sumo-python38:1.24.0 .
3 镜像打包
# 基本语法:docker save -o [导出文件路径] [镜像名称:标签]
docker save -o sumo-python38_1.24.0.tar sumo-python38:1.24.0
或
docker save sumo-python38:1.24.0 | gzip > sumo-python38_1.24.0.tar.gz
4 镜像导入
# 导入未压缩的tar文件
docker load -i sumo-python38_1.24.0.tar
# 导入压缩的tar.gz文件
docker load -i sumo-python38_1.24.0.tar.gz
5 服务运行
docker run -id --privileged=true --memory=4g --restart=always --name sumo_common --net=host -v /sumo_kako_sim:/sumo 98884c65fd11 sh /sumo/start.sh
更多推荐


所有评论(0)