youbiaokachi commited on
Commit
906d0c0
·
verified ·
1 Parent(s): 7d46840

Update Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +18 -8
Dockerfile CHANGED
@@ -2,19 +2,28 @@ FROM mcr.microsoft.com/playwright/python:v1.44.0-jammy
2
 
3
  WORKDIR /app
4
 
5
- # 先安装依赖
6
  RUN pip install --no-cache-dir flask requests curl_cffi werkzeug loguru python-dotenv patchright
7
  RUN python -m patchright install --with-deps chrome
8
 
9
- # 先把所有代码和文件复制进来
10
  COPY . .
11
 
12
- # --- START: 核心修改 ---
13
- # 在所有文件都就位之后,再创建 data 目录并设置权限
14
- # 这样做可以确保我们的权限设置不会被 COPY 命令覆盖
15
- # -p 参数确保如果 /app/data 目录已存在(通过 COPY 复制进来的),命令也不会报错
16
- RUN mkdir -p /app/data && chown -R pwuser:pwuser /app/data
17
- # --- END: 核心修改 ---
 
 
 
 
 
 
 
 
 
18
 
19
  ENV PORT=5200
20
  ENV PYTHONUNBUFFERED=1
@@ -23,3 +32,4 @@ EXPOSE 5200
23
 
24
  CMD ["python", "app.py"]
25
 
 
 
2
 
3
  WORKDIR /app
4
 
5
+ # 安装依赖
6
  RUN pip install --no-cache-dir flask requests curl_cffi werkzeug loguru python-dotenv patchright
7
  RUN python -m patchright install --with-deps chrome
8
 
9
+ # 复制所有代码和文件
10
  COPY . .
11
 
12
+ # --- START: 采用您提出的 /tmp + 符号链接方案 ---
13
+
14
+ # 1. /tmp 目录下创建一个实际的数据目录。/tmp 目录对所有用户都是可写的。
15
+ RUN mkdir -p /tmp/data
16
+
17
+ # 2. (可选但推荐) 将这个临时目录的所有权也明确交给 pwuser,确保完全的控制权。
18
+ # 虽然 /tmp 本身可写,但这样做更规范,避免任何潜在的子目录权限问题。
19
+ RUN chown -R pwuser:pwuser /tmp/data
20
+
21
+ # 3. 创建一个从 /data 到 /tmp/data 的符号链接。
22
+ # 这步是关键!当应用尝试访问或写入 /data 时,操作系统会自动将其重定向到
23
+ # /tmp/playwright_data,而 pwuser 在那里拥有写入权限。
24
+ RUN ln -s /tmp/data /data
25
+
26
+ # --- END ---
27
 
28
  ENV PORT=5200
29
  ENV PYTHONUNBUFFERED=1
 
32
 
33
  CMD ["python", "app.py"]
34
 
35
+