jupyterlab / Dockerfile
Slickstar's picture
Update Dockerfile
2d71eef verified
Raw
History Blame Contribute Delete
3.19 kB
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND=noninteractive \
TZ=Europe/Paris
# Remove any third-party apt sources to avoid issues with expiring keys.
# Install some basic utilities
# Install all dependencies
RUN apt-get update && apt-get install -y \
mariadb-server \
curl \
redis-server \
python3 \
sudo \
less \
nano \
jq \
python3-pip \
python3-venv \
python3-setuptools \
python3-wheel \
git \
supervisor \
pkg-config \
nginx \
cron \
tzdata \
libcups2-dev \
libldap2-dev \
libsasl2-dev \
mariadb-client \
libmariadb-dev \
libmariadb-dev-compat \
gunicorn \
&& rm -rf /var/lib/apt/lists/*
# Upgrade pip and install bench
RUN useradd -m -s /bin/bash frappe
# Init bench as frappe user
USER frappe
WORKDIR /home/frappe
RUN python3 -m venv py314 && . /home/frappe/py314/bin/activate && \
pip3 install --upgrade pip && pip3 install uv frappe-bench jupyterlab && \
uv python install 3.14
# Setup frappe user
#RUN . /home/frappe/py314/bin/activate && bench init frappe-bench --python /home/frappe/.local/bin/python3.14
# Get apps
#WORKDIR /home/frappe/frappe-bench
#RUN . /home/frappe/py314/bin/activate && bench get-app erpnext
# Build assets
#RUN . /home/frappe/py314/bin/activate && bench build
USER root
WORKDIR /app
RUN adduser --disabled-password --gecos '' --shell /bin/bash user \
&& chown -R user:user /app
RUN echo "user ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/90-user
USER user
# All users can use /home/user as their home directory
ENV HOME=/home/user
RUN mkdir $HOME/.cache $HOME/.config \
&& chmod -R 777 $HOME
# Set up the Conda environment
WORKDIR $HOME/app
#######################################
# Start root user section
#######################################
USER root
# User Debian packages
## Security warning : Potential user code executed as root (build time)
RUN --mount=target=/root/packages.txt,source=packages.txt \
apt-get update && \
xargs -r -a /root/packages.txt apt-get install -y --no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
RUN --mount=target=/root/on_startup.sh,source=on_startup.sh,readwrite \
bash /root/on_startup.sh
RUN mkdir /data && chown user:user /data
#######################################
# End root user section
#######################################
#USER user
# Python packages
RUN --mount=target=requirements.txt,source=requirements.txt \
pip install --no-cache-dir --upgrade -r requirements.txt
# Copy the current directory contents into the container at $HOME/app setting the owner to the user
COPY --chown=user . $HOME/app
RUN chmod +x start_server.sh
COPY --chown=user login.html /home/frappe/py314/lib/python3.10/site-packages/jupyter_server/templates/login.html
#USER user
#RUN jupyter server --port 8989
#RUN python -m http.server 8090
USER root
#RUN rm -f /etc/nginx/sites-enabled/default
COPY nginx-erpnext.conf /etc/nginx/sites-available/erpnext
RUN ln -sf /etc/nginx/sites-available/erpnext /etc/nginx/sites-enabled/erpnext
# Entrypoint
#COPY entrypoint.sh /entrypoint.sh
#RUN chmod +x /entrypoint.sh
EXPOSE 7860
RUN nginx
RUN service nginx status
CMD ["./start_server.sh"]