Dockerfile 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # ===================== 第一阶段:构建 Python 3.12 环境 =====================
  2. FROM centos:xnyV1.3 AS python-builder
  3. # 配置阿里云 yum 源(确保容器内 yum 可用)
  4. RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && \
  5. sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo && \
  6. yum clean all && yum makecache
  7. # 安装 Python 编译依赖
  8. RUN yum install -y \
  9. gcc make openssl-devel bzip2-devel libffi-devel zlib-devel \
  10. sqlite-devel readline-devel xz-devel tk-devel libnsl-devel \
  11. libtirpc-devel wget
  12. # 下载并编译 Python 3.12(直接使用官方源,避免校验失败)
  13. RUN cd /tmp && \
  14. wget https://mirrors.huaweicloud.com/python/3.12.0/Python-3.12.0.tgz && \
  15. echo "51412956d86a61d1a7d227873d2b3697e1fccc16d7b3b5e2b6a8cd372d74edb9 Python-3.12.0.tgz" | sha256sum -c - && \
  16. tar xzf Python-3.12.0.tgz && \
  17. cd Python-3.12.0 && \
  18. ./configure \
  19. --enable-optimizations \
  20. --with-lto=no \
  21. --enable-shared \
  22. --with-system-expat \
  23. --with-system-ffi \
  24. --with-ensurepip=yes \
  25. --enable-ipv6 && \
  26. make -j$(($(nproc)-1)) altinstall && \
  27. ldconfig && \
  28. ln -sf /usr/local/bin/python3.12 /usr/local/bin/python3 && \
  29. ln -sf /usr/local/bin/pip3.12 /usr/local/bin/pip3
  30. # ===================== 第二阶段:构建最终应用镜像 =====================
  31. FROM centos:xnyV1.3
  32. # 1. 从 Python 构建阶段复制环境
  33. COPY --from=python-builder /usr/local/ /usr/local/
  34. # 2. 修复共享库链接
  35. RUN ldconfig && \
  36. ln -sf /usr/local/bin/python3.12 /usr/local/bin/python3 && \
  37. ln -sf /usr/local/bin/pip3.12 /usr/local/bin/pip3
  38. # 3. 安装 MongoDB
  39. RUN echo -e "[mongodb-org-6.0]\n\
  40. name=MongoDB Repository\n\
  41. baseurl=https://repo.mongodb.org/yum/redhat/7/mongodb-org/6.0/x86_64/\n\
  42. gpgcheck=1\n\
  43. enabled=1\n\
  44. gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc" \
  45. > /etc/yum.repos.d/mongodb-org-6.0.repo && \
  46. yum install -y mongodb-org && \
  47. mkdir -p /data/db && chown mongod:mongod /data/db
  48. # 4. 设置工作目录并复制应用代码
  49. WORKDIR /app
  50. COPY ./app/ .
  51. # 5. 安装 Python 依赖
  52. COPY app/requirements.txt .
  53. RUN pip3 install --no-cache-dir -r requirements.txt
  54. # 6. 启动脚本(同时启动 MongoDB 和 Python 应用)
  55. CMD ["sh", "-c", "mongod --fork --logpath /var/log/mongodb.log"]