# syntax = docker/dockerfile:1.2 FROM quay.io/archlinux/archlinux:base-devel USER root # Docker ENV variables # # Required # ENV MYVNC_VNCPASS # # Optional # ENV MYVNC_CUSTOM_TITLE # ENV MYVNC_PROXYPATH (eg, "/subpath/" or "/subpath") # ENV MYVNC_VNCSHARING (eg, "true" to allow sharing (defaults to "false")) # ENV MYVNC_VNCSERVER_HOST (eg, localhost or 192.168.1.1) # ENV MYVNC_VNCSERVER_PORT (eg, 5900) # Build ARG for additional pacman packages to install (eg, openssh) ARG pkg # Install packages COPY mirrorlist /etc/pacman.d/mirrorlist RUN pacman-key --init \ && sed -i '/ParallelDownloads/c ParallelDownloads = 10' /etc/pacman.conf \ && pacman -Sy --ask 4 archlinux-keyring \ && pacman -Su --ask 4 --needed \ sudo bash-completion ${pkg} \ inetutils python-numpy python-setuptools \ nginx-mainline \ && pacman -Scc --ask 4 \ && useradd --create-home --gid users --shell /usr/bin/bash user \ && echo 'user ALL=(ALL:ALL) NOPASSWD: MISCELLANEOUS, /usr/bin/nginx' >/etc/sudoers.d/zz-DOCKER \ && echo 'Defaults lecture = never' >>/etc/sudoers.d/zz-DOCKER \ && passwd -l root >/dev/null 2>&1 \ && sed '/^http {/a\ \ include /app/nginx/\*.conf;\n\ \ types_hash_max_size 4096;\n\ \ server_names_hash_bucket_size 128;\n' -i /etc/nginx/nginx.conf \ && mkdir -p /app/init.d /app/nginx /app/logs # Install noVNC COPY novnc /app/novnc # Install all init scripts COPY docker-entrypoint.sh /docker-entrypoint.sh COPY 01-init.sh 10-novnc.sh 10-nginx.sh /app/init.d/ # Proper permissions RUN chmod +x /docker-entrypoint.sh /app/init.d/* \ && chown -R user:users /app # Default environment USER user WORKDIR /home/user ENV DISPLAY=:0 ENV SHELL=/usr/bin/bash # Expose nginx port for VNC webui EXPOSE 6900 # Docker entrypoint ENTRYPOINT ["/docker-entrypoint.sh"]