wmdjt commited on
Commit
33bcd7c
·
verified ·
1 Parent(s): 8907a1d

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +154 -0
Dockerfile ADDED
@@ -0,0 +1,154 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM nvidia/cuda:12.5.1-cudnn-devel-ubuntu20.04
2
+
3
+ ENV DEBIAN_FRONTEND=noninteractive \
4
+ TZ=Europe/Paris
5
+
6
+ # 以root身份开始,安装所有系统工具
7
+ RUN rm -f /etc/apt/sources.list.d/*.list && \
8
+ apt-get update && apt-get install -y --no-install-recommends \
9
+ curl \
10
+ ca-certificates \
11
+ sudo \
12
+ git \
13
+ wget \
14
+ procps \
15
+ git-lfs \
16
+ zip \
17
+ unzip \
18
+ htop \
19
+ vim \
20
+ nano \
21
+ bzip2 \
22
+ libx11-6 \
23
+ build-essential \
24
+ libsndfile-dev \
25
+ software-properties-common \
26
+ net-tools \
27
+ lsof \
28
+ strace \
29
+ gdb \
30
+ openssh-server \
31
+ tmux \
32
+ screen \
33
+ && rm -rf /var/lib/apt/lists/*
34
+
35
+ # 安装系统监控和诊断工具
36
+ RUN add-apt-repository ppa:flexiondotorg/nvtop -y && \
37
+ apt-get update && \
38
+ apt-get install -y --no-install-recommends \
39
+ nvtop \
40
+ iotop \
41
+ iftop \
42
+ nethogs \
43
+ sysstat \
44
+ dstat
45
+
46
+ # 安装Node.js和相关工具
47
+ RUN curl -sL https://deb.nodesource.com/setup_21.x | bash - && \
48
+ apt-get install -y nodejs && \
49
+ npm install -g configurable-http-proxy \
50
+ pm2 \
51
+ forever
52
+
53
+ # 设置工作目录
54
+ WORKDIR /app
55
+
56
+ # 创建用户,但给予最大权限
57
+ RUN adduser --disabled-password --gecos '' --shell /bin/bash user && \
58
+ usermod -aG sudo user && \
59
+ echo "user ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers && \
60
+ echo "root ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers
61
+
62
+ # 设置最大权限的环境变量
63
+ ENV HOME=/home/user
64
+ RUN mkdir -p $HOME/.cache $HOME/.config $HOME/.ssh && \
65
+ chmod -R 777 $HOME && \
66
+ chown -R user:user $HOME && \
67
+ chmod 777 /app && \
68
+ chmod 777 /tmp
69
+
70
+ # 安装Conda并给予最大权限
71
+ ENV CONDA_AUTO_UPDATE_CONDA=false \
72
+ PATH=$HOME/miniconda/bin:$PATH
73
+ RUN curl -sLo /tmp/miniconda.sh https://repo.continuum.io/miniconda/Miniconda3-py39_4.10.3-Linux-x86_64.sh \
74
+ && chmod +x /tmp/miniconda.sh \
75
+ && bash /tmp/miniconda.sh -b -p $HOME/miniconda \
76
+ && rm /tmp/miniconda.sh \
77
+ && conda clean -ya \
78
+ && chmod -R 777 $HOME/miniconda
79
+
80
+ WORKDIR $HOME/app
81
+
82
+ # 系统级配置和最大权限设置
83
+ RUN echo "alias sudo='sudo '" >> $HOME/.bashrc && \
84
+ echo "export PATH=$PATH:/usr/local/cuda/bin" >> $HOME/.bashrc && \
85
+ echo "export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH" >> $HOME/.bashrc && \
86
+ echo "umask 000" >> $HOME/.bashrc
87
+
88
+ # 安装系统级Python包(root权限)
89
+ RUN pip install --upgrade pip && \
90
+ pip install --no-cache-dir \
91
+ jupyter \
92
+ jupyterlab \
93
+ ipython \
94
+ notebook \
95
+ gpustat \
96
+ psutil
97
+
98
+ # 创建数据目录并给予最大权限
99
+ RUN mkdir -p /data /workspace /logs && \
100
+ chmod -R 777 /data /workspace /logs && \
101
+ chown -R user:user /data /workspace /logs
102
+
103
+ # 设置SSH服务(允许远程root访问)
104
+ RUN mkdir /var/run/sshd && \
105
+ echo 'root:password' | chpasswd && \
106
+ echo 'user:password' | chpasswd && \
107
+ sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \
108
+ sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config
109
+
110
+ # 复制并执行最大权限的自启动脚本
111
+ COPY --chown=root:root on_startup.sh /root/on_startup.sh
112
+ COPY --chown=user:user on_startup.sh /home/user/on_startup.sh
113
+ RUN chmod 777 /root/on_startup.sh /home/user/on_startup.sh
114
+
115
+ # 执行系统级启动脚本(root权限)
116
+ RUN bash /root/on_startup.sh
117
+
118
+ # 复制应用代码并给予最大权限
119
+ COPY --chown=user:user . $HOME/app
120
+ RUN chmod -R 777 $HOME/app
121
+
122
+ # 安装Python依赖(最大权限)
123
+ COPY --chown=user:user requirements.txt $HOME/app/requirements.txt
124
+ RUN pip install --no-cache-dir --upgrade -r $HOME/app/requirements.txt
125
+
126
+ # 复制Jupyter登录页(允许无密码访问)
127
+ COPY --chown=root:root login.html /usr/local/lib/python3.9/site-packages/jupyter_server/templates/login.html
128
+ RUN chmod 666 /usr/local/lib/python3.9/site-packages/jupyter_server/templates/login.html
129
+
130
+ # 设置最大权限的环境变量
131
+ ENV PYTHONUNBUFFERED=1 \
132
+ GRADIO_ALLOW_FLAGGING=never \
133
+ GRADIO_NUM_PORTS=1 \
134
+ GRADIO_SERVER_NAME=0.0.0.0 \
135
+ GRADIO_THEME=huggingface \
136
+ SYSTEM=spaces \
137
+ SHELL=/bin/bash \
138
+ JUPYTER_ALLOW_INSECURE_WRITES=1 \
139
+ JUPYTER_ENABLE_LAB=yes \
140
+ NOTEBOOK_ALLOW_ROOT=1
141
+
142
+ # 启动脚本(最大权限)
143
+ COPY --chown=root:root start_server.sh /start_server.sh
144
+ COPY --chown=user:user start_server.sh $HOME/app/start_server.sh
145
+ RUN chmod 777 /start_server.sh $HOME/app/start_server.sh
146
+
147
+ # 设置为user用户,但保留所有sudo权限
148
+ USER user
149
+
150
+ # 多端口启动支持(最大网络权限)
151
+ EXPOSE 22 80 443 8888 7860 8000 8001 8002 9000 9001
152
+
153
+ # 启动所有服务(最大权限)
154
+ CMD ["sudo", "bash", "-c", "/start_server.sh && /home/user/app/start_server.sh && /bin/bash"]