104 lines
2.4 KiB
Docker
104 lines
2.4 KiB
Docker
|
|
# 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"]
|