# 1. 基础镜像 FROM ubuntu:24.04 # 2. 预备环境 (为了能跑通 InstallSDK 脚本) # 设置非交互模式,防止 apt 卡住 ENV DEBIAN_FRONTEND=noninteractive # 安装运行 InstallSDK 脚本所需的“最小”前置工具 # - sudo: 脚本里通常有 sudo 命令 # - unzip: 解压你的源码包 # - lsb-release: 脚本可能会检测系统版本 # - file/wget: 脚本常用的工具 RUN apt-get update && apt-get install -y \ sudo \ unzip \ lsb-release \ file \ wget \ nano \ && rm -rf /var/lib/apt/lists/* # 3. 准备文件 WORKDIR /root # 复制源码包和安装脚本 COPY secondo-RC_430.zip . COPY InstallSDK_Ubuntu_24_04.bash . # 4. 解压源码 # 解压并重命名为 secondo (模拟你物理机上的 /home/db/secondo) RUN unzip -q secondo-RC_430.zip \ && mv secondo-RC_430 secondo \ && rm secondo-RC_430.zip # 5. 【核心步骤】执行官方安装脚本 # - chmod: 给脚本执行权限 # - yes | ...: 自动回答脚本中可能出现的 "Do you want to continue? [Y/n]" # - 脚本会自动安装 gcc, flex, bison, java 等所有依赖,并生成 .secondorc RUN bash InstallSDK_Ubuntu_24_04.bash # 6. 配置环境加载方式 # 脚本运行完会生成 /root/.secondorc # 我们将它写入 .bashrc,这样你进入容器交互时环境是好的 RUN echo "source /root/.secondorc /root/secondo" >> /root/.bashrc # 7. 源码补丁 (这是必须要做的,因为脚本只负责装环境,不负责修源码里的 GCC 13 错误) WORKDIR /root/secondo # [修复权限] 对应你物理机的 chmod 操作 RUN chmod -R +x . # [修复 GCC 13] 去掉 -Werror,否则编译必挂 RUN find . -name "makefile*" -print0 | xargs -0 sed -i 's/-Werror//g' # [修复 API] 跳过 API 编译,防止链接错误 # RUN sed -i '/API/d' makefile && \ # sed -i 's/update-config \\/update-config/' makefile # 8. 编译 Secondo # 切换 Docker 的默认 Shell 为 bash,否则 source 命令无法使用 SHELL ["/bin/bash", "-c"] # 关键:先 source 脚本生成的配置,再编译! # 这样 make 就能读到 InstallSDK 设置的所有变量 RUN source /root/.secondorc /root/secondo && \ make clean && \ make # 9. 验证安装 RUN ls -l bin/SecondoTTYCS bin/SecondoListener # 10. 启动配置 EXPOSE 1234 # 容器启动时,也先加载环境,再启动 Listener CMD source /root/.secondorc /root/secondo && ./bin/SecondoListener