# VSCode Kubernetes Optimized Dockerfile FROM codercom/enterprise-base:ubuntu # Avoid prompts from apt ENV DEBIAN_FRONTEND=noninteractive # Set environment variables ENV WORKSPACE_DIR=/home/coder/workspace COPY EXAMPLE_ROOT_CA.pem /usr/local/share/ca-certificates/EXAMPLE_ROOT_CA.crt RUN sudo update-ca-certificates COPY openssl.cnf /etc/ssl/openssl.cnf ENV OPENSSL_CONF=/etc/ssl/openssl.cnf # Install essential packages RUN sudo apt-get update && sudo apt-get install -y \ curl \ unzip \ wget \ git \ sudo \ build-essential \ python3 \ python3-pip \ nodejs \ npm \ ca-certificates \ openjdk-17-jdk \ maven \ gradle \ && sudo rm -rf /var/lib/apt/lists/* # Adding AWS CLI RUN sudo curl https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o "./awscliv2.zip" RUN sudo unzip awscliv2.zip RUN sudo ./aws/install # Download and install code-server RUN curl -fsSL https://code-server.dev/install.sh | sh # Install Coder CLI version 2.19.0 (matching your control plane) RUN curl -fsSL https://github.com/coder/coder/releases/download/v2.19.0/coder_2.19.0_linux_amd64.tar.gz | \ tar -xzf - -C /tmp && \ sudo mv /tmp/coder /usr/local/bin/coder && \ sudo chmod +x /usr/local/bin/coder # Create workspace directory and ensure proper structure RUN mkdir -p ${WORKSPACE_DIR} && \ mkdir -p /home/coder/.local/share/code-server/User && \ mkdir -p /home/coder/.local/share/code-server/extensions && \ mkdir -p /home/coder/.local/share/code-server/logs && \ mkdir -p /home/coder/.config/code-server # Create enhanced Git setup script and workspace startup script COPY scripts/setup-git-auth.sh /usr/local/bin/setup-git-auth.sh COPY scripts/start-workspace.sh /usr/local/bin/start-workspace.sh # Fix line endings and permissions (critical for exec format error) RUN dos2unix /usr/local/bin/setup-git-auth.sh /usr/local/bin/start-workspace.sh 2>/dev/null || true && \ sudo chmod +x /usr/local/bin/setup-git-auth.sh && \ sudo chmod +x /usr/local/bin/start-workspace.sh && \ # Test script syntax bash -n /usr/local/bin/setup-git-auth.sh && \ bash -n /usr/local/bin/start-workspace.sh # Set proper permissions RUN chown -R coder:coder /home/coder RUN sudo chmod -R 755 /usr/local/bin # Expose ports EXPOSE 8080 # Set working directory WORKDIR /home/coder/workspace # Use non-root user USER coder