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
Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐