File size: 2,044 Bytes
c520e0a 511bc62 6992e29 676bf15 6992e29 7182945 f1bd50d 0d321d4 511bc62 7182945 676bf15 b26378c 676bf15 b26378c 46649e0 136dd39 f1bd50d 136dd39 6992e29 7182945 136dd39 6992e29 511bc62 6992e29 511bc62 6992e29 511bc62 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
FROM jupyter/scipy-notebook
# Set the working directory to /app
WORKDIR /app
# Copy the requirements file
COPY requirements.txt .
# Copy static files
COPY public /app/public
# Switch to root user to install system packages and set permissions
USER root
# Install sudo and other dependencies
RUN apt-get update && apt-get install -y \
wget \
nginx \
sudo \
build-essential \
curl \
git \
vim \
&& apt-get clean && rm -rf /var/lib/apt/lists/*
# Install Python dependencies
RUN pip install --no-cache-dir -r requirements.txt
# Add jovyan to sudoers
RUN usermod -aG sudo jovyan && \
echo "jovyan ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/jovyan && \
chmod 0440 /etc/sudoers.d/jovyan
# Copy the configuration files and entrypoint script
COPY jupyter_config.py /etc/jupyter/jupyter_config.py
COPY nginx.conf /etc/nginx/nginx.conf
COPY entrypoint.sh /app/entrypoint.sh
# Set the entrypoint script as executable
RUN chmod +x /app/entrypoint.sh
# Create necessary directories and set permissions for Nginx
RUN mkdir -p /var/lib/nginx/body /var/lib/nginx/fastcgi \
/var/lib/nginx/proxy /var/lib/nginx/scgi \
/var/lib/nginx/uwsgi /var/log/nginx \
&& chown -R ${NB_UID}:${NB_GID} /var/lib/nginx /var/log/nginx /var/run /run \
&& chmod 755 /var/lib/nginx /var/run /run
# Ensure Nginx has permissions to write to log directory and PID file
RUN touch /var/log/nginx/error.log /var/log/nginx/access.log /run/nginx.pid \
&& chown -R ${NB_UID}:${NB_GID} /var/log/nginx /run/nginx.pid
# Set the permissions for the app directory to the existing user
RUN chown -R ${NB_UID}:${NB_GID} /app
# Switch back to the original user
USER ${NB_UID}
# Set the working directory for the user
WORKDIR /home/${NB_USER}/app
# Expose the port 8888 for JupyterLab
EXPOSE 8888
# Expose the port 7860 for Nginx
EXPOSE 7860
# Set the environment variables
ENV JUPYTERLAB_PORT=8888
ENV NGINX_PORT=7860
# Run the entrypoint script when the container starts
ENTRYPOINT ["/app/entrypoint.sh"] |