Files
Newton-LSP/Docker/Dockerfile

87 lines
2.1 KiB
Docker
Raw Permalink Normal View History

# 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/
# 4. A: Install system level 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
# 4. B: Install SDKMAN
USER abaddon
RUN curl -fsSL https://get.sdkman.io | bash
USER root
# 4. C: Install pyenv
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. d: 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"]