mn9206986 commited on
Commit
1e505f3
·
verified ·
1 Parent(s): 1946ead

Create Dockerfile

Browse files
Files changed (1) hide show
  1. Dockerfile +84 -0
Dockerfile ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM debian:12
2
+
3
+ ENV DEBIAN_FRONTEND=noninteractive
4
+ ENV LANG=C.UTF-8
5
+
6
+ # Cài package cần thiết
7
+ RUN apt-get update && apt-get install -y --no-install-recommends \
8
+ qemu-system-x86 \
9
+ qemu-utils \
10
+ sudo \
11
+ cloud-image-utils \
12
+ software-properties-common \
13
+ genisoimage \
14
+ novnc \
15
+ websockify \
16
+ curl \
17
+ unzip \
18
+ python3-pip \
19
+ openssh-client \
20
+ net-tools \
21
+ netcat-openbsd \
22
+ bash \
23
+ wget \
24
+ && rm -rf /var/lib/apt/lists/* && apt clean
25
+
26
+ # Tạo thư mục cần thiết
27
+ RUN mkdir -p /data /novnc /opt/qemu /cloud-init && \
28
+ chmod -R 777 /data /novnc /opt/qemu /cloud-init
29
+
30
+ # Download Alpine Cloud Image
31
+ RUN curl -L https://dl-cdn.alpinelinux.org/alpine/v3.22/releases/cloud/aws_alpine-3.22.1-x86_64-bios-tiny-r0.vhd \
32
+ -o /opt/qemu/alpine.vhd && \
33
+ chmod 666 /opt/qemu/alpine.vhd
34
+
35
+ # Convert sang raw + resize 64G + chmod
36
+ RUN qemu-img convert -f vpc -O raw /opt/qemu/alpine.vhd /opt/qemu/alpine.raw && \
37
+ qemu-img resize /opt/qemu/alpine.raw 64G && \
38
+ chmod 666 /opt/qemu/alpine.raw
39
+
40
+ # Tạo meta-data
41
+ RUN echo "instance-id: alpine-vm\nlocal-hostname: localhost" > /cloud-init/meta-data && \
42
+ chmod 666 /cloud-init/meta-data
43
+
44
+ # Tạo user-data
45
+ RUN printf "#cloud-config\n\
46
+ preserve_hostname: false\n\
47
+ hostname: localhost\n\
48
+ users:\n\
49
+ - name: alpine\n\
50
+ gecos: alpine\n\
51
+ shell: /bin/sh\n\
52
+ lock_passwd: false\n\
53
+ passwd: \$6\$abcd1234\$W6wzBuvyE.D1mBGAgQw2uvUO/honRrnAGjFhMXSk0LUbZosYtoHy1tUtYhKlALqIldOGPrYnhSrOfAknpm91i0\n\
54
+ sudo: ALL=(ALL) NOPASSWD:ALL\n\
55
+ disable_root: false\n\
56
+ ssh_pwauth: true\n\
57
+ chpasswd:\n\
58
+ list: |\n\
59
+ alpine:root\n\
60
+ expire: false\n\
61
+ runcmd:\n\
62
+ - systemctl enable ssh\n\
63
+ - systemctl restart ssh\n" > /cloud-init/user-data && \
64
+ chmod 666 /cloud-init/user-data
65
+
66
+ # Tạo ISO cloud-init
67
+ RUN genisoimage -output /opt/qemu/seed.iso -volid cidata -joliet -rock \
68
+ /cloud-init/user-data /cloud-init/meta-data && \
69
+ chmod 666 /opt/qemu/seed.iso
70
+
71
+ # Setup noVNC
72
+ RUN curl -L https://github.com/novnc/noVNC/archive/refs/tags/v1.3.0.zip -o /tmp/novnc.zip && \
73
+ unzip /tmp/novnc.zip -d /tmp && \
74
+ mv /tmp/noVNC-1.3.0/* /novnc && \
75
+ rm -rf /tmp/novnc.zip /tmp/noVNC-1.3.0 && \
76
+ chmod -R 777 /novnc
77
+
78
+ # Copy start.sh
79
+ COPY start.sh /start.sh
80
+ RUN chmod +x /start.sh
81
+
82
+ EXPOSE 7860 2222
83
+
84
+ CMD ["bash", "/start.sh"]