Spaces:
Paused
Paused
Create Dockerfile
Browse files- Dockerfile +61 -0
Dockerfile
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# 基础镜像(以 ubuntu 为例,也适用于 debian)
|
| 2 |
+
FROM ubuntu:24.04
|
| 3 |
+
|
| 4 |
+
# 避免交互式提示(tzdata 等)
|
| 5 |
+
ENV DEBIAN_FRONTEND=noninteractive
|
| 6 |
+
|
| 7 |
+
# 1. 安装 sudo(很多基础镜像没有 sudo)
|
| 8 |
+
RUN apt-get update && \
|
| 9 |
+
apt-get install -y sudo unzip lsof python3 python3-pip python3-venv curl git wget nodejs npm xz-utils zip libglu1-mesa && \
|
| 10 |
+
# 清理缓存,减小镜像体积
|
| 11 |
+
apt-get clean && rm -rf /var/lib/apt/lists/*
|
| 12 |
+
|
| 13 |
+
# 2. 创建新用户(这里叫 devuser,你可以改名)
|
| 14 |
+
# -m 创建 home 目录
|
| 15 |
+
# -s 指定 shell(可选,默认 /bin/sh)
|
| 16 |
+
ARG USERNAME=good
|
| 17 |
+
ARG USER_UID=1001
|
| 18 |
+
ARG USER_GID=$USER_UID
|
| 19 |
+
|
| 20 |
+
RUN groupadd --gid ${USER_GID} ${USERNAME} && \
|
| 21 |
+
useradd --uid ${USER_UID} --gid ${USER_GID} -m ${USERNAME} && \
|
| 22 |
+
# 可选:设置密码(调试用,不推荐生产)
|
| 23 |
+
# echo "${USERNAME}:yourpassword" | chpasswd && \
|
| 24 |
+
# 加入 sudo 组
|
| 25 |
+
usermod -aG sudo ${USERNAME}
|
| 26 |
+
|
| 27 |
+
# 3. 给 sudo 组无密码权限(最常用方式)
|
| 28 |
+
# 或者只给这个用户:echo "${USERNAME} ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/${USERNAME}
|
| 29 |
+
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers && \
|
| 30 |
+
# 确保权限正确(sudoers 文件必须 0440)
|
| 31 |
+
chmod 0440 /etc/sudoers
|
| 32 |
+
|
| 33 |
+
|
| 34 |
+
# 5. 设置工作目录(可选)
|
| 35 |
+
WORKDIR /home/${USERNAME}
|
| 36 |
+
|
| 37 |
+
COPY . .
|
| 38 |
+
RUN chmod +x /home/${USERNAME}/entry.sh
|
| 39 |
+
# 4. 切换到新用户(后续 RUN、CMD、ENTRYPOINT 都用这个用户)
|
| 40 |
+
USER ${USERNAME}
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
|
| 44 |
+
RUN curl -sSf https://sshx.io/get | sh
|
| 45 |
+
|
| 46 |
+
RUN wget -O vscode-cli.tar.gz "https://code.visualstudio.com/sha/download?build=stable&os=cli-alpine-x64" && \
|
| 47 |
+
tar xf vscode-cli.tar.gz && \
|
| 48 |
+
# 得到一个叫 code 的可执行文件
|
| 49 |
+
chmod +x code && \
|
| 50 |
+
./code --version && \
|
| 51 |
+
sudo mv code /usr/local/bin/code &&\
|
| 52 |
+
wget -O flutter_code.tar.gz https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.41.0-stable.tar.xz && \
|
| 53 |
+
tar xf flutter_code.tar.gz && \
|
| 54 |
+
echo 'export PATH="$PATH:/home/good/flutter/bin"' >> ~/.bashrc && \
|
| 55 |
+
rm flutter_code.tar.gz && \
|
| 56 |
+
rm vscode-cli.tar.gz
|
| 57 |
+
|
| 58 |
+
EXPOSE 7860
|
| 59 |
+
|
| 60 |
+
#ENTRYPOINT /home/good/entry.sh
|
| 61 |
+
CMD sshx & python3 -m http.server 7860
|