File size: 1,269 Bytes
c129353
a6b4b50
 
c129353
a6b4b50
 
ffb40ca
c129353
 
 
 
 
 
a6b4b50
 
c129353
 
a6b4b50
c129353
a6b4b50
c129353
a6b4b50
 
c129353
 
 
ffb40ca
 
c129353
a5f4505
 
c129353
 
a5f4505
ffb40ca
 
 
 
a5f4505
ffb40ca
c129353
 
 
a6b4b50
 
c129353
a6b4b50
 
c129353
a6b4b50
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
# Step 1: Base Image
FROM node:20-slim

# Step 2: Set Working Directory
WORKDIR /app

# --- 创建一个专门用于运行的用户 ---
RUN useradd --create-home --shell /bin/bash appuser
USER appuser
WORKDIR /home/appuser/app

# Step 3: Copy package files and install dependencies
COPY --chown=appuser:appuser package*.json ./
RUN npm ci

# Step 4: Install Playwright's system dependencies
USER root
RUN npx playwright install-deps
USER appuser

# Step 5: Install Playwright browsers
RUN npx playwright install

# Step 6: Copy the rest of the application code
COPY --chown=appuser:appuser . .

# Step 7: ***【简化权限设置】***
# 准备可写的代理目录
USER root

# (1) 处理代理二进制文件
RUN mkdir -p /tmp/proxy && cp src/proxy/chrome_proxy_server_linux_amd64 /tmp/proxy/
RUN chmod +x /tmp/proxy/chrome_proxy_server_linux_amd64

# (2) ***【移除】*** 不再需要处理日志文件权限
# RUN mkdir -p /tmp/logs
# RUN touch /tmp/logs/proxy_server.log
# RUN chown -R appuser:appuser /tmp/logs

# 切换回 appuser
USER appuser

# Step 8: Expose the application port
EXPOSE 7860

# Step 9: Set production environment
ENV NODE_ENV=production

# Step 10: Define the command to run the application
CMD ["node", "src/lightweight-client-express.js"]