|
|
FROM debian:12 |
|
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive |
|
|
ENV LANG=C.UTF-8 |
|
|
|
|
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \ |
|
|
qemu-system-x86 \ |
|
|
qemu-utils \ |
|
|
sudo \ |
|
|
cloud-image-utils \ |
|
|
software-properties-common \ |
|
|
genisoimage \ |
|
|
novnc \ |
|
|
websockify \ |
|
|
curl \ |
|
|
unzip \ |
|
|
python3-pip \ |
|
|
openssh-client \ |
|
|
net-tools \ |
|
|
netcat-openbsd \ |
|
|
bash \ |
|
|
wget \ |
|
|
&& rm -rf /var/lib/apt/lists/* && apt clean |
|
|
|
|
|
|
|
|
RUN mkdir -p /data /novnc /opt/qemu /cloud-init && \ |
|
|
chmod -R 777 /data /novnc /opt/qemu /cloud-init |
|
|
|
|
|
|
|
|
RUN curl -L https://dl-cdn.alpinelinux.org/alpine/v3.22/releases/cloud/aws_alpine-3.22.1-x86_64-bios-tiny-r0.vhd \ |
|
|
-o /opt/qemu/alpine.vhd && \ |
|
|
chmod 666 /opt/qemu/alpine.vhd |
|
|
|
|
|
|
|
|
RUN qemu-img convert -f vpc -O raw /opt/qemu/alpine.vhd /opt/qemu/alpine.raw && \ |
|
|
qemu-img resize /opt/qemu/alpine.raw 64G && \ |
|
|
chmod 666 /opt/qemu/alpine.raw |
|
|
|
|
|
|
|
|
RUN echo "instance-id: alpine-vm\nlocal-hostname: localhost" > /cloud-init/meta-data && \ |
|
|
chmod 666 /cloud-init/meta-data |
|
|
|
|
|
|
|
|
RUN printf "#cloud-config\n\ |
|
|
preserve_hostname: false\n\ |
|
|
hostname: localhost\n\ |
|
|
users:\n\ |
|
|
- name: alpine\n\ |
|
|
gecos: alpine\n\ |
|
|
shell: /bin/sh\n\ |
|
|
lock_passwd: false\n\ |
|
|
passwd: \$6\$abcd1234\$W6wzBuvyE.D1mBGAgQw2uvUO/honRrnAGjFhMXSk0LUbZosYtoHy1tUtYhKlALqIldOGPrYnhSrOfAknpm91i0\n\ |
|
|
sudo: ALL=(ALL) NOPASSWD:ALL\n\ |
|
|
disable_root: false\n\ |
|
|
ssh_pwauth: true\n\ |
|
|
chpasswd:\n\ |
|
|
list: |\n\ |
|
|
alpine:root\n\ |
|
|
expire: false\n\ |
|
|
runcmd:\n\ |
|
|
- systemctl enable ssh\n\ |
|
|
- systemctl restart ssh\n" > /cloud-init/user-data && \ |
|
|
chmod 666 /cloud-init/user-data |
|
|
|
|
|
|
|
|
RUN genisoimage -output /opt/qemu/seed.iso -volid cidata -joliet -rock \ |
|
|
/cloud-init/user-data /cloud-init/meta-data && \ |
|
|
chmod 666 /opt/qemu/seed.iso |
|
|
|
|
|
|
|
|
RUN curl -L https://github.com/novnc/noVNC/archive/refs/tags/v1.3.0.zip -o /tmp/novnc.zip && \ |
|
|
unzip /tmp/novnc.zip -d /tmp && \ |
|
|
mv /tmp/noVNC-1.3.0/* /novnc && \ |
|
|
rm -rf /tmp/novnc.zip /tmp/noVNC-1.3.0 && \ |
|
|
chmod -R 777 /novnc |
|
|
|
|
|
|
|
|
COPY start.sh /start.sh |
|
|
RUN chmod +x /start.sh |
|
|
|
|
|
EXPOSE 7860 2222 |
|
|
|
|
|
CMD ["bash", "/start.sh"] |
|
|
|