123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- # 基础镜像构建Dockerfile
- # 包含系统依赖和ODBC组件
- # 优化版本:减少镜像层数,提高构建效率
- # 基础系统依赖镜像
- FROM python:3.13-slim
- # 创建工作目录
- WORKDIR /app
- # 设置环境变量
- ENV FREETDS_VERSION=7.3 \
- ODBCSYSINI=/etc \
- ODBCINI=/etc/odbc.ini \
- DEBIAN_FRONTEND=noninteractive \
- TZ=Asia/Shanghai
- # 配置阿里云APT源并安装基础依赖
- RUN set -eux; \
- # 配置阿里云APT源 - 提高下载速度
- echo "deb http://mirrors.aliyun.com/debian bullseye main contrib non-free" > /etc/apt/sources.list && \
- echo "deb http://mirrors.aliyun.com/debian bullseye-updates main contrib non-free" >> /etc/apt/sources.list && \
- echo "deb http://mirrors.aliyun.com/debian-security bullseye-security main contrib non-free" >> /etc/apt/sources.list && \
- # 修改动态生成的APT源配置文件
- find /etc/apt/sources.list.d/ -type f -exec sed -i 's|http://deb.debian.org|http://mirrors.aliyun.com|g' {} \; && \
- find /etc/apt/sources.list.d/ -type f -exec sed -i 's|http://security.debian.org|http://mirrors.aliyun.com|g' {} \; && \
- # 更新源并安装基础系统依赖 - 合并安装所有依赖减少层数
- apt-get update && \
- apt-get install -y --no-install-recommends \
- # 系统基础依赖
- apt-utils \
- libc6 \
- curl \
- gnupg2 \
- ca-certificates \
- # ODBC基础依赖
- libltdl7 \
- libodbc1 \
- libodbcinst2 \
- odbcinst \
- odbcinst1debian2 \
- unixodbc \
- unixodbc-common \
- unixodbc-dev \
- # FreeTDS相关依赖
- freetds-bin \
- freetds-dev \
- tdsodbc && \
- # 配置FreeTDS - 使用单一配置文件
- { \
- echo "[global]"; \
- echo " tds version = 7.3"; \
- echo " client charset = UTF-8"; \
- echo " timeout = 60"; \
- echo " connect timeout = 15"; \
- } > /etc/freetds/freetds.conf && \
- # 配置ODBC驱动 - 使用单一配置文件
- { \
- echo "[FreeTDS]"; \
- echo "Description = TDS driver (Sybase/MS SQL)"; \
- echo "Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so"; \
- echo "CPTimeout ="; \
- echo "CPReuse ="; \
- echo "UsageCount = 1"; \
- } > /etc/odbcinst.ini && \
- # 验证驱动安装 - 确保配置正确
- if [ ! -f /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so ]; then \
- echo "ERROR: FreeTDS ODBC driver not found"; \
- exit 1; \
- fi && \
- # 清理临时文件 - 减小镜像大小
- apt-get clean && \
- apt-get autoremove -y && \
- rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
- # 健康检查 - 验证ODBC配置是否正确
- HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
- CMD [ "odbcinst", "-q", "-d", "-n", "FreeTDS" ]
|