Files
django-vue3-admin/backend/Dockerfile
T
lewis_yan c146409012 fix: manually register ODBC Driver 18 by appending to odbcinst.ini
Instead of using odbcinst command (location uncertain), directly append
driver config to /etc/odbcinst.ini
2026-04-01 15:56:25 +08:00

49 lines
2.0 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第一阶段:构建
FROM docker.1ms.run/python:3.10-slim as builder
WORKDIR /backend
# 安装系统依赖(合并为一个RUN减少层数)
RUN apt-get update && apt-get install -y \
bash git curl gnupg ca-certificates \
libjpeg-dev libmariadb-dev-compat default-libmysqlclient-dev \
build-essential libffi-dev libssl-dev zlib1g-dev libbz2-dev \
libpcre2-dev libncurses5-dev libreadline-dev tk-dev libpq-dev unixodbc-dev \
&& rm -rf /var/lib/apt/lists/* \
&& curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/microsoft.gpg \
&& echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-focal-prod focal main" > /etc/apt/sources.list.d/mssql-release.list \
&& apt-get update \
&& ACCEPT_EULA=Y apt-get install -y msodbcsql18 \
&& rm -rf /var/lib/apt/lists/*
# 先复制依赖文件,利用缓存
COPY ./backend/requirements.txt .
# 安装 Python 依赖(带缓存加速)
RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple/ -r requirements.txt
# 复制剩余代码
COPY ./backend/ .
# 配置
RUN ls ./conf/ \
&& awk 'BEGIN { cmd="cp -i ./conf/env.example.py ./conf/env.py "; print "n" |cmd; }' \
&& sed -i "s|DATABASE_HOST = '127.0.0.1'|DATABASE_HOST = '177.10.0.1'|g" ./conf/env.py \
&& sed -i "s|REDIS_HOST = '127.0.0.1'|REDIS_HOST = '177.10.0.1'|g" ./conf/env.py
# 第二阶段:运行时镜像
FROM docker.1ms.run/python:3.10-slim
RUN apt-get update && apt-get install -y unixodbc libodbc2 && rm -rf /var/lib/apt/lists/*
COPY --from=builder /usr/local/lib/python3.10/site-packages /usr/local/lib/python3.10/site-packages
COPY --from=builder /usr/local/bin /usr/local/bin
COPY --from=builder /opt/microsoft/msodbcsql18 /opt/microsoft/msodbcsql18
COPY --from=builder /backend /backend
# 手动注册 ODBC Driver 18(写入 odbcinst.ini)
RUN cat /opt/microsoft/msodbcsql18/etc/odbcinst.ini >> /etc/odbcinst.ini || true
WORKDIR /backend
CMD ["sh","docker_start.sh"]