-
Notifications
You must be signed in to change notification settings - Fork 56
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #727 from frlda/main
Docker构建支持更新
- Loading branch information
Showing
2 changed files
with
59 additions
and
32 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,47 +1,57 @@ | ||
FROM ubuntu:22.04 AS ubuntu-base | ||
|
||
# 部署教程参考https://www.cnblogs.com/frinda/p/18702822 | ||
# 设置环境变量以避免tzdata的交互式提示 | ||
ENV DEBIAN_FRONTEND noninteractive | ||
ENV DEBIAN_FRONTEND=noninteractive | ||
|
||
# 安装必要的系统库 | ||
RUN apt-get update && \ | ||
# 替换APT源为阿里云镜像源,提高下载速度,安装系统依赖和 Python 3.12 | ||
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|https://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list && \ | ||
sed -i 's|http://security.ubuntu.com/ubuntu|https://mirrors.aliyun.com/ubuntu|g' /etc/apt/sources.list && \ | ||
apt-get update && \ | ||
apt-get install -y software-properties-common && \ | ||
add-apt-repository ppa:deadsnakes/ppa && \ | ||
apt-get update && \ | ||
apt-get install -y python3.8 python3.8-venv python3.8-tk python3.8-dev python3-pip \ | ||
build-essential libgirepository1.0-dev gcc libcairo2-dev pkg-config libzbar0 adb git \ | ||
libgtk-3-dev gir1.2-webkit2-4.1 gir1.2-appindicator3-0.1 gobject-introspection tk8.6 \ | ||
xvfb \ | ||
dbus \ | ||
&& rm -rf /var/lib/apt/lists/* | ||
|
||
|
||
|
||
# 使用官方Node.js 18镜像作为基础镜像构建前端 | ||
apt-get install -y python3.12 python3.12-venv python3.12-tk python3.12-dev python3-pip \ | ||
build-essential libgirepository1.0-dev gcc libcairo2-dev fish nano wget pkg-config libzbar0 adb git \ | ||
libgtk-3-dev gir1.2-webkit2-4.1 gir1.2-appindicator3-0.1 gobject-introspection tk8.6 \ | ||
xvfb dbus && \ | ||
rm -rf /var/lib/apt/lists/* | ||
|
||
# 设置 Python 3.12 为默认 Python 版本 | ||
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.12 1 && \ | ||
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1 && \ | ||
update-alternatives --set python3 /usr/bin/python3.12 && \ | ||
update-alternatives --set python /usr/bin/python3.12 | ||
|
||
# 使用官方 Node.js 18 镜像作为基础镜像构建前端 | ||
FROM node:18 AS node-base | ||
WORKDIR /app/ui | ||
|
||
# 安装前端依赖并构建 | ||
COPY ui/package*.json ./ | ||
COPY ui/package*.json ./ | ||
COPY ui/. . | ||
RUN npm ci | ||
RUN npm run build --no-update-notifier | ||
|
||
RUN npm config set registry https://registry.npmmirror.com && \ | ||
npm ci --verbose && \ | ||
npm run build --no-update-notifier | ||
|
||
|
||
# 合并阶段,使用Python环境为基础,将构建好的前端加入 | ||
# 将 Ubuntu 基础镜像作为最终运行镜像 | ||
FROM ubuntu-base AS final | ||
WORKDIR /app | ||
|
||
# 复制前端构建产出 | ||
COPY --from=node-base /app/ui/dist ./ui/dist | ||
COPY . . | ||
|
||
# 设置 pip 国内镜像源 | ||
RUN python3.12 -m ensurepip --upgrade && \ | ||
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ | ||
|
||
# 设置Python虚拟环境并安装依赖 | ||
RUN python3.8 -m venv venv | ||
|
||
RUN pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ | ||
|
||
RUN . venv/bin/activate && pip install --upgrade pip && pip install -r requirements.txt && pip install pycairo PyGObject | ||
# 设置 Python 虚拟环境并安装依赖 | ||
RUN python3.12 -m venv venv && \ | ||
. venv/bin/activate && \ | ||
pip install --upgrade pip && \ | ||
pip install -r requirements.txt && \ | ||
pip install pycairo PyGObject | ||
|
||
# 运行应用 | ||
ENTRYPOINT ["/bin/bash", "/app/entrypoint.sh"] | ||
ENTRYPOINT ["/bin/bash", "/app/entrypoint.sh"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,14 +1,31 @@ | ||
#!/bin/bash | ||
|
||
ln -s ui/dist . | ||
# 清理 Xvfb 锁文件,防止容器因为异常关闭而重启失败 | ||
if [ -f /tmp/.X99-lock ]; then | ||
echo "Cleaning up Xvfb lock file" | ||
rm -f /tmp/.X99-lock | ||
fi | ||
|
||
# 启动Xvfb | ||
# 启动 Xvfb | ||
echo "Starting Xvfb on DISPLAY=:99" | ||
Xvfb :99 -screen 0 1280x1024x24 & | ||
sleep 2 | ||
|
||
export DISPLAY=":99" | ||
# 检查 Xvfb 是否正常运行 | ||
if ! xdpyinfo -display :99 >/dev/null 2>&1; then | ||
echo "Xvfb failed to start" | ||
exit 1 | ||
fi | ||
|
||
# 等待Xvfb启动完成 | ||
sleep 5 | ||
# 设置 DISPLAY 环境变量 | ||
export DISPLAY=:99 | ||
echo "DISPLAY is set to $DISPLAY" | ||
|
||
# 启动应用 | ||
# 创建符号链接 | ||
if [ ! -L "./dist" ]; then | ||
ln -s ui/dist ./dist | ||
fi | ||
|
||
# 启动mower应用 | ||
echo "Starting application..." | ||
dbus-run-session -- ./venv/bin/python /app/webview_ui.py |