# 使用官方的基于 Ubuntu 的 Node.js 18 镜像 FROM node:20 # 设置构建时的参数和标签信息 ARG BUILD_DATE LABEL build-date=$BUILD_DATE LABEL maintainer="ZHAO Xudong " LABEL description="This is Docker image for electerm-web" LABEL url="https://github.com/electerm/electerm-web-docker" LABEL vendor="electerm" LABEL version="2.39.109" # 安装构建工具,并创建 electerm 用户和组 RUN apt-get update && \ apt-get install -y --no-install-recommends git python-is-python3 make build-essential g++ && \ groupadd -r electerm && \ useradd -r -g electerm -d /home/electerm -s /bin/bash electerm && \ mkdir -p /home/electerm && \ chown -R electerm:electerm /home/electerm && \ chmod 755 /home/electerm # 切换到 electerm 用户并设置工作目录 USER electerm WORKDIR /app # 克隆 electerm-web 仓库,创建目录并设置权限 RUN git clone --depth 1 https://github.com/electerm/electerm-web.git /app/electerm-web && \ mkdir -p /app/electerm-web/data/electerm_session_logs && \ chown -R electerm:electerm /app/electerm-web WORKDIR /app/electerm-web # 安装依赖并构建项目 RUN npm uninstall @playwright/test chai playwright && \ npm install && \ npm run build && \ cp .sample.env .env && \ npm prune --production && \ npm cache clean --force # 清理不必要的构建依赖 USER root RUN apt-get remove -y git python-is-python3 make build-essential g++ && \ apt-get autoremove -y && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # 切换回 electerm 用户并设置最终的工作目录 USER electerm WORKDIR /app/electerm-web # 启动应用 CMD ["node", "./src/app/app.js"]