Spaces:
Paused
Paused
| # 基础镜像(以 ubuntu 为例,也适用于 debian) | |
| FROM ubuntu:24.04 | |
| # 避免交互式提示(tzdata 等) | |
| ENV DEBIAN_FRONTEND=noninteractive | |
| # 1. 安装 sudo(很多基础镜像没有 sudo) | |
| RUN apt-get update && \ | |
| apt-get install -y sudo unzip lsof python3 python3-pip python3-venv curl git wget nodejs npm xz-utils zip libglu1-mesa ffmpeg && \ | |
| # 清理缓存,减小镜像体积 | |
| apt-get clean && rm -rf /var/lib/apt/lists/* | |
| # 2. 创建新用户(这里叫 devuser,你可以改名) | |
| # -m 创建 home 目录 | |
| # -s 指定 shell(可选,默认 /bin/sh) | |
| ARG USERNAME=good | |
| ARG USER_UID=1001 | |
| ARG USER_GID=$USER_UID | |
| RUN groupadd --gid ${USER_GID} ${USERNAME} && \ | |
| useradd --uid ${USER_UID} --gid ${USER_GID} -m ${USERNAME} && \ | |
| # 可选:设置密码(调试用,不推荐生产) | |
| # echo "${USERNAME}:yourpassword" | chpasswd && \ | |
| # 加入 sudo 组 | |
| usermod -aG sudo ${USERNAME} | |
| # 3. 给 sudo 组无密码权限(最常用方式) | |
| # 或者只给这个用户:echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${USERNAME} | |
| RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \ | |
| # 确保权限正确(sudoers 文件必须 0440) | |
| chmod 0440 /etc/sudoers | |
| # 5. 设置工作目录(可选) | |
| WORKDIR /home/${USERNAME} | |
| COPY . . | |
| # 4. 切换到新用户(后续 RUN、CMD、ENTRYPOINT 都用这个用户) | |
| USER ${USERNAME} | |
| RUN curl -sSf https://sshx.io/get | sh | |
| RUN wget -O vscode-cli.tar.gz "https://code.visualstudio.com/sha/download?build=stable&os=cli-alpine-x64" && \ | |
| tar xf vscode-cli.tar.gz && \ | |
| wget -O N_m3u8DL-RE.tar.gz "https://github.com/nilaoda/N_m3u8DL-RE/releases/download/v0.5.1-beta/N_m3u8DL-RE_v0.5.1-beta_linux-x64_20251029.tar.gz" && \ | |
| tar xf N_m3u8DL-RE.tar.gz && \ | |
| # 得到一个叫 code 的可执行文件 | |
| chmod +x code && \ | |
| chmod +x N_m3u8DL-RE && \ | |
| ./code --version && \ | |
| sudo mv N_m3u8DL-RE /usr/local/bin/N_m3u8DL-RE &&\ | |
| rm N_m3u8DL-RE.tar.gz && \ | |
| sudo mv code /usr/local/bin/code && \ | |
| rm vscode-cli.tar.gz | |
| EXPOSE 7860 | |
| #ENTRYPOINT /home/good/entry.sh | |
| CMD sshx & python3 -m http.server 7860 |