# 1. A: Define a base image FROM itdominator-base # 1. B: Set ENV Variables ENV NVM_VERSION=0.40.3 ENV NODE_VERSION=24.9.0 ENV PYTHON_VERSION=3.12.12 ENV PYTHONDONTWRITEBYTECODE=1 ENV PYTHONUNBUFFERED=1 ENV NVM_DIR="/root/.nvm" ENV PYENV_ROOT="/opt/pyenv" ENV JEXTRACT_PATH="/opt/jextract" ENV JAVA_LS_PATH="/opt/java-language-server" ENV JDTLS_PATH="/opt/jdtls" ENV MAVEN_PATH="/opt/maven" ENV JAVA_HOME="/opt/jdk" ENV PATH="${NVM_DIR}/versions/node/v${NODE_VERSION}/bin/:${PATH}" ENV PATH="${PYENV_ROOT}/bin:${PYENV_ROOT}/shims:${PATH}" ENV PATH="${JEXTRACT_PATH}/bin:${PATH}" ENV PATH="${JAVA_LS_PATH}/:${PATH}" ENV PATH="${JDTLS_PATH}/bin:${PATH}" ENV PATH="${MAVEN_PATH}/bin:${PATH}" ENV PATH="${JAVA_HOME}/bin:${PATH}" ENV PATH="/opt:${PATH}" # 2. Set the working directory inside the container WORKDIR /app # 3. Copy the requirements and src files COPY requirements.txt . COPY package.json . COPY src/* . COPY Docker/scripts/run.sh . COPY Docker/opt/ /opt/ COPY Docker/env/* /home/abaddon/ # 4. A: Install dependencies # RUN apt update # RUN apt install RUN apt-get update RUN apt-get install -y \ --no-install-recommends \ --no-install-suggests \ clang \ php \ lua5.4 \ gdb \ clangd \ gopls 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 # 4. B: Install nvm and node 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 npm install RUN node --version RUN npm --version RUN java --version # 5. Cleanup RUN apt-get autoremove --purge RUN apt-get autoclean RUN rm -rf /var/lib/apt/lists/* RUN rm -rf /tmp/* RUN rm -rf "${NVM_DIR}/.cache" RUN rm /app/requirements.txt # 6. Expose Port and define the command used to run the app EXPOSE 9999 CMD ["/app/run.sh"]