-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathDockerfile
More file actions
66 lines (54 loc) · 2.94 KB
/
Dockerfile
File metadata and controls
66 lines (54 loc) · 2.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 使用官方Python运行时作为基础镜像
# python:3.11-slim-bullseye 是一个轻量级的Python 3.11镜像,基于Debian Bullseye
FROM python:3.11-slim-bullseye
# 设置容器内的工作目录
# 这将在容器内创建 /MoneyPrinterTurbo 目录并设置为当前工作目录
WORKDIR /MoneyPrinterTurbo
# 设置/MoneyPrinterTurbo目录权限为777(完全读写执行权限)
# 这确保应用程序有足够的权限来读写文件
RUN chmod 777 /MoneyPrinterTurbo
# 设置Python路径环境变量
# 告诉Python在哪里查找模块和包
ENV PYTHONPATH="/MoneyPrinterTurbo"
# 安装系统依赖包,使用重试逻辑和多次尝试
# 使用for循环进行最多3次尝试,如果成功则break退出,如果全部失败则exit 1
# --fix-missing: 如果某些包下载失败,尝试使用本地缓存的版本
# --no-install-recommends: 只安装必需的包,不安装推荐的包,减少镜像大小
RUN for i in 1 2 3; do \
apt-get update --fix-missing && \
apt-get install -y --no-install-recommends \
git \ # Git版本控制工具
imagemagick \ # 图像处理工具
ffmpeg \ # 音视频处理工具
&& apt-get clean \ # 清理apt缓存
&& rm -rf /var/lib/apt/lists/* \ # 删除包列表文件
&& break; \ # 如果成功则跳出循环
done || exit 1 # 如果所有尝试都失败则退出
# 修复ImageMagick的安全策略
# 删除限制ImageMagick处理某些文件类型的策略,允许处理更多格式
RUN sed -i '/<policy domain="path" rights="none" pattern="@\*"/d' /etc/ImageMagick-6/policy.xml
# 首先只复制requirements.txt文件以利用Docker缓存
# 这样如果requirements.txt没有变化,pip install步骤可以使用缓存
COPY requirements.txt ./
# 安装Python依赖包,使用重试逻辑
# --no-cache-dir: 不使用pip缓存,减少镜像大小
# --retries 3: 下载失败时重试3次
# --timeout 60: 设置60秒超时时间
RUN pip install --no-cache-dir --retries 3 --timeout 60 -r requirements.txt
# 现在将代码库的其余部分复制到镜像中
# 这包括所有的Python代码、配置文件等
COPY . .
# 暴露应用程序运行的端口
# Streamlit默认使用8501端口
EXPOSE 8501
# 容器启动时运行的命令
# 启动Streamlit应用,配置为本地访问,启用CORS,禁用使用统计收集
CMD ["streamlit", "run", "./webui/Main.py","--browser.serverAddress=127.0.0.1","--server.enableCORS=True","--browser.gatherUsageStats=False"]
# ===== 使用说明 =====
# 1. 构建Docker镜像的命令:
# docker build -t moneyprinterturbo .
# 2. 运行Docker容器的命令:
# Linux或MacOS系统:
# docker run -v $(pwd)/config.toml:/MoneyPrinterTurbo/config.toml -v $(pwd)/storage:/MoneyPrinterTurbo/storage -p 8501:8501 moneyprinterturbo
# Windows系统:
# docker run -v ${PWD}/config.toml:/MoneyPrinterTurbo/config.toml -v ${PWD}/storage:/MoneyPrinterTurbo/storage -p 8501:8501 moneyprinterturbo