FROM ubuntu:22.04 ENV DEBIAN_FRONTEND=noninteractive # upgrade and install basic tools RUN apt-get update && \ apt-get install -y \ sudo \ openssh-server \ jq \ vim \ git \ python3.10 \ python3-pip \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release \ && apt-get clean && \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* && \ mkdir /var/run/sshd # install Node.js and npm RUN curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - && \ apt-get install -y nodejs && \ apt-get clean && \ rm -rf /var/lib/apt/lists/* # install Docker RUN curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg && \ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null && \ apt-get update && \ apt-get install -y docker-ce docker-ce-cli containerd.io && \ rm -rf /var/lib/apt/lists/* # install Docker Compose RUN curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \ chmod +x /usr/local/bin/docker-compose # config SSH RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin prohibit-password/' /etc/ssh/sshd_config && \ sed -i 's/#PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config && \ sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config && \ sed -i 's/#ClientAliveInterval 0/ClientAliveInterval 60/' /etc/ssh/sshd_config && \ sed -i 's/#ClientAliveCountMax 3/ClientAliveCountMax 5/' /etc/ssh/sshd_config # expose SSH port EXPOSE 22 # copy start.sh COPY start.sh /usr/local/bin/start.sh RUN chmod +x /usr/local/bin/start.sh # set python3 as default python RUN ln -s /usr/bin/python3 /usr/bin/python # copy devbox files RUN mkdir -p /opt/devbox/ /mnt/docker_data/ COPY requirements.txt /opt/devbox/requirements.txt COPY init_open_box.sh init_devbox.sh start_backend_for_dev.sh start_frontend_for_dev.sh gitea_data_backup.tar.gz .dev.env /opt/devbox/ RUN chmod +x /opt/devbox/*.sh RUN pip3 install -r /opt/devbox/requirements.txt # configure Docker data root RUN echo '{"data-root": "/mnt/docker_data/docker"}' > /etc/docker/daemon.json RUN useradd -u 1001 -m -s /bin/bash freedev && \ echo "freedev ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \ usermod -aG docker freedev; # start CMD ["/usr/local/bin/start.sh"]