# 1. A: Define a base image FROM itdominator-base ARG USERNAME=itdominator # 1. B: Set ENV Variables ENV DISPLAY=:0 ENV NVM_VERSION=0.40.3 ENV NODE_VERSION=24.9.0 ENV PYTHON_VERSION=3.12.12 ENV PYTHON_SUB_VERSION=3.12 ENV NVM_DIR="/root/.nvm" ENV PYENV_ROOT="/opt/pyenv" ENV PATH="${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH}" ENV PATH="${PYENV_ROOT}/bin:${PYENV_ROOT}/shims:${PATH}" ENV PATH="/opt:${PATH}" ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 # 2. Set the working directory inside the container WORKDIR /home/${USERNAME}/ # 3. A: Install dependencies RUN apt-get update && apt-get install -y \ --no-install-recommends \ --no-install-suggests \ libgl1-mesa-dri \ libgl1 \ libegl1 \ libx11-6 \ libxext6 \ libxrender1 \ libxi6 \ libxtst6 \ dbus-x11 \ x11-apps \ x11-utils \ xdg-utils \ xauth \ fontconfig \ fonts-dejavu-core \ fonts-dejavu \ fonts-dejavu-extra \ python3-gi \ python3-gi-cairo \ libgtk-3-0 \ libgtk-3-bin \ libatk1.0-0 \ libgdk-pixbuf-2.0-0 \ libpango-1.0-0 \ libpangocairo-1.0-0 \ libcairo2 \ libcairo-gobject2 \ libglib2.0-0 \ libgtksourceview-4-0 \ libatk-bridge2.0-0 \ gir1.2-gtk-3.0 \ gir1.2-glib-2.0 \ gir1.2-gdkpixbuf-2.0 \ gir1.2-pango-1.0 \ gir1.2-appindicator3-0 \ gir1.2-gtksource-4 \ gir1.2-gtksource-3.0 \ gir1.2-webkit2-4.1 \ gir1.2-vte-2.91 \ gir1.2-notify-0.7 \ gir1.2-glib-2.0 \ gir1.2-secret-1 \ gir1.2-keybinder-3.0 # --- AppIndicator (system tray) --- # gir1.2-ayatanaappindicator3-0 \ # modern (try first) # libayatana-appindicator3 \ COPY requirements.txt . RUN curl -fsSL https://pyenv.run | bash RUN pyenv install ${PYTHON_VERSION} && pyenv global ${PYTHON_VERSION} && pyenv local ${PYTHON_VERSION} RUN pip install --no-cache-dir -r requirements.txt RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v"${NVM_VERSION}"/install.sh | bash RUN . "${NVM_DIR}/nvm.sh" && nvm install ${NODE_VERSION} RUN . "${NVM_DIR}/nvm.sh" && nvm use v${NODE_VERSION} RUN . "${NVM_DIR}/nvm.sh" && nvm alias default v${NODE_VERSION} RUN node --version RUN npm --version # 4. ... # 5. Cleanup RUN apt-get autoremove -y --purge RUN apt-get autoclean RUN rm -rf /var/lib/apt/lists/* RUN rm -rf /tmp/* RUN rm requirements.txt # 6. Expose Port and define the command used to run the app CMD ["bash"]