-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile
More file actions
97 lines (77 loc) · 2.76 KB
/
Dockerfile
File metadata and controls
97 lines (77 loc) · 2.76 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
FROM node:19-alpine AS ai-assistant-builder
# 添加DNS配置
ENV DNS_SERVERS="8.8.8.8 8.8.4.4"
# 如果你有可用的代理,可以取消注释并配置
# ENV HTTP_PROXY=http://your-proxy-server:port
# ENV HTTPS_PROXY=http://your-proxy-server:port
# ENV NO_PROXY=localhost,127.0.0.1
WORKDIR /app/aqua-ai-chat-teacher-assistant
COPY ./aqua-ai-chat-teacher-assistant ./
RUN npm install -g pnpm
# 设置网络超时时间
RUN pnpm config set network-timeout 100000
# 设置npm注册表,使用淘宝镜像
RUN pnpm config set registry https://registry.npmmirror.com
RUN pnpm install --force
# 跳过类型检查和 linting
ENV NEXT_SKIP_TYPE_CHECK=true
ENV NEXT_SKIP_ESLINT=true
# 增加NODE_OPTIONS环境变量以增加内存限制和DNS解析顺序设置
ENV NODE_OPTIONS="--max-old-space-size=4096 --dns-result-order=ipv4first"
RUN pnpm exec next build --no-lint
FROM python:3.11-slim
# 如果你有可用的代理,可以取消注释并配置
# ENV HTTP_PROXY=http://your-proxy-server:port
# ENV HTTPS_PROXY=http://your-proxy-server:port
# ENV NO_PROXY=localhost,127.0.0.1
# 安装基本依赖
RUN apt-get update && apt-get install -y \
curl \
gnupg \
netcat-traditional \
xz-utils \
net-tools \
procps \
iproute2 \
iputils-ping \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 设置Node.js环境变量
ENV NODE_VERSION=19.9.0
# 安装Node.js
RUN curl -fsSL https://nodejs.org/dist/v$NODE_VERSION/node-v$NODE_VERSION-linux-x64.tar.xz -o /tmp/node.tar.xz \
&& mkdir -p /usr/local/lib/nodejs \
&& tar -xJf /tmp/node.tar.xz -C /usr/local/lib/nodejs \
&& rm /tmp/node.tar.xz \
&& mv /usr/local/lib/nodejs/node-v$NODE_VERSION-linux-x64 /usr/local/lib/nodejs/node-v$NODE_VERSION
# 设置PATH环境变量
ENV PATH="/usr/local/lib/nodejs/node-v$NODE_VERSION/bin:$PATH"
# 验证Node.js和npm是否正确安装
RUN echo "Node.js Path: $(which node)" \
&& echo "NPM Path: $(which npm)" \
&& node -v \
&& npm -v
# 安装pnpm并验证安装
RUN npm install -g pnpm \
&& echo "Node: $(node -v)" \
&& echo "NPM: $(npm -v)" \
&& echo "PNPM: $(pnpm -v)"
WORKDIR /app
# 复制AI助教项目
COPY --from=ai-assistant-builder /app/aqua-ai-chat-teacher-assistant /app/aqua-ai-chat-teacher-assistant
# 设置ExamBank项目
COPY ./exambank/requirements.txt /app/exambank/
RUN pip install --no-cache-dir -r /app/exambank/requirements.txt
RUN pip install --no-cache-dir gunicorn django-cors-headers
RUN mkdir -p /app/exambank/db
COPY ./exambank /app/exambank/
# 复制启动脚本
COPY start.sh /app/
RUN chmod +x /app/start.sh
# 复制数据库文件
COPY ./exambank/db.sqlite3 /app/exambank/db.sqlite3
# 确保 exambank 目录有正确的权限
RUN chmod -R 755 /app/exambank
EXPOSE 3000 8002
# 启动两个应用
CMD ["/app/start.sh"]