File size: 1,667 Bytes
c520e0a
511bc62
6992e29
 
 
 
 
 
676bf15
6992e29
 
7182945
f1bd50d
 
6992e29
c520e0a
511bc62
7182945
 
 
 
 
 
 
 
676bf15
 
 
 
 
 
 
46649e0
676bf15
 
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
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 the dependencies
RUN apt-get update && apt-get install -y wget nginx && pip install -r requirements.txt

# 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 \
    && chmod 755 /var/lib/nginx

# Ensure Nginx has permissions to write to log directory
RUN touch /var/log/nginx/error.log /var/log/nginx/access.log \
    && chown -R ${NB_UID}:${NB_GID} /var/log/nginx

# 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 JUPYTERLAB_TOKEN=your_secret_token
ENV NGINX_PORT=7860

# Run the entrypoint script when the container starts
ENTRYPOINT ["/app/entrypoint.sh"]