You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器部署Python3.8与MongoDB失败及备份验证咨询

解决Docker容器构建失败问题及备份功能验证

错误原因

mongo:4.0.4 基于Debian 9(Stretch),该系统的官方软件源中没有Python 3.8的包,直接通过apt-get安装会导致定位包失败,需要通过源码编译的方式安装Python 3.8。


修改后的Dockerfile配置

FROM mongo:4.0.4

# 安装编译Python所需的依赖工具
RUN apt-get update && apt-get install -y --no-install-recommends \
    wget \
    build-essential \
    libssl-dev \
    zlib1g-dev \
    libncurses5-dev \
    libncursesw5-dev \
    libreadline-dev \
    libsqlite3-dev \
    libgdbm-dev \
    libdb5.3-dev \
    libbz2-dev \
    libexpat1-dev \
    liblzma-dev \
    tk-dev \
    uuid-dev \
    && rm -rf /var/lib/apt/lists/*

# 编译安装Python 3.8
RUN wget https://www.python.org/ftp/python/3.8.17/Python-3.8.17.tgz && \
    tar -xf Python-3.8.17.tgz && \
    cd Python-3.8.17 && \
    ./configure --enable-optimizations && \
    make -j$(nproc) && \
    make altinstall && \
    cd .. && \
    rm -rf Python-3.8.17.tgz Python-3.8.17

# 安装pip并配置软链接
RUN wget https://bootstrap.pypa.io/get-pip.py && \
    python3.8 get-pip.py && \
    rm get-pip.py && \
    ln -s /usr/local/bin/python3.8 /usr/local/bin/python3 && \
    ln -s /usr/local/bin/pip3.8 /usr/local/bin/pip3

# 安装pymongo
RUN pip3 install pymongo

EXPOSE 27017

# 创建应用目录并设置卷
RUN mkdir -p /app/src /app/dump
VOLUME ["/app/src", "/app/dump", "/data/db", "/var/www/html"]

CMD ["/bin/bash"]

注:原docker-compose.yml配置无需修改,可直接使用


验证备份功能正常

1. 启动容器

执行构建并启动容器:

docker-compose up -d --build

2. 进入容器并创建测试数据

进入容器内部:

docker-compose exec py-mongo bash

连接MongoDB并插入测试数据:

mongo -u root -p 1234 admin
use testdb
db.testcol.insertOne({"name": "demo", "value": 456})
exit

3. 执行备份命令

在容器内执行备份,将压缩备份文件保存到挂载的/app/dump目录:

mongodump --archive=/app/dump/backup.tar.gz --gzip -u root -p 1234 --authenticationDatabase admin

4. 验证备份文件同步到主机

退出容器后,查看主机的dump目录:

ls ./dump

若能看到backup.tar.gz文件,说明主机与容器的目录挂载正常。

5. 验证备份可恢复

再次进入容器,先删除测试数据库再恢复备份:

docker-compose exec py-mongo bash
# 删除测试库
mongo -u root -p 1234 admin --eval "db.dropDatabase('testdb')"
# 恢复备份
mongorestore --archive=/app/dump/backup.tar.gz --gzip -u root -p 1234 --authenticationDatabase admin
# 检查数据是否恢复
mongo -u root -p 1234 admin --eval "use testdb; db.testcol.find()"

若输出结果中能看到之前插入的{"name": "demo", "value": 456}数据,说明备份恢复功能正常。

内容的提问来源于stack exchange,提问作者Bosser445

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:27:55