| 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"] |
|
|