FROM ubuntu:22.04 # Setup workspace directory RUN mkdir /workspace WORKDIR /workspace # Install useful system utilities ENV TZ=America/New_York ENV DEBIAN_FRONTEND=noninteractive RUN apt-get update \ && apt-get install --yes \ apt-transport-https \ ca-certificates \ curl \ debian-keyring \ debian-archive-keyring \ git \ gnupg \ locales \ postgresql-client \ software-properties-common \ sudo \ tzdata \ wget \ zsh \ && rm -rf /var/lib/apt/lists/* # Install Python 3.11 RUN add-apt-repository ppa:deadsnakes/ppa \ && apt update \ && apt install --yes \ python3.11 \ python3-pip \ libpq-dev \ python3.11-dev \ && rm -rf /var/lib/apt/lists* \ && unlink /usr/bin/python3 \ && ln -s /usr/bin/python3.11 /usr/bin/python3 # Use a non-root user per https://code.visualstudio.com/remote/advancedcontainers/add-nonroot-user ARG USERNAME=vscode ARG USER_UID=1000 ARG USER_GID=$USER_UID # Add non-root user and add to sudoers RUN groupadd --gid $USER_GID $USERNAME \ && useradd --uid $USER_UID --gid $USER_GID -m $USERNAME -s /usr/bin/zsh \ && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \ && chmod 0440 /etc/sudoers.d/$USERNAME # Set code to default git commit editor RUN git config --system core.editor "code --wait" # Set Safe Directory RUN git config --system safe.directory '/workspace' # Configure zsh USER $USERNAME ENV HOME /home/$USERNAME # Add zsh theme with niceties RUN curl https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh | bash - \ && sed -i 's/robbyrussell/kennethreitz/g' ~/.zshrc \ && echo 'source <(ng completion script)' >>~/.zshrc \ && echo 'export PATH=$PATH:$HOME/.local/bin' >>~/.zshrc # Set Locale for Functional Autocompletion in zsh RUN sudo locale-gen en_US.UTF-8 # Install Database Dependencies COPY backend/requirements.txt /workspace/backend/requirements.txt WORKDIR /workspace/backend RUN python3 -m pip install -r requirements.txt