본문 바로가기
Linux

Docker - Jupyter Notebook Docker에서 실행하기 with Nginx

by 올엠 2024. 12. 10.
반응형

Docker 를 이용해서 설치를 한다면, pip를 이용해서 설치하는 것이 가장 깔끔한 선택이라고 할 수 있다.

# 베이스 이미지 선택 (예: Python 3.8 슬림 버전)
FROM python:3.8-slim

# 작업 디렉터리 설정
WORKDIR /app

# 필요한 패키지 설치
RUN pip install --no-cache-dir notebook

# 노트북 서버 포트 개방
EXPOSE 8888

# Jupyter Notebook 실행
CMD ["jupyter", "notebook", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root"]

 

만약 여기에 Nginx를 이용하게 되면, 특정 경로는 Notebook 그외 경로는 다른 서비스를 할 수 있도록 구성도 가능하게 된다.

아래는 Nginx와 함께 Notebook을 설치하는 스크립트이다.

# 베이스 이미지 선택 (예: Python 3.8 슬림 버전)
FROM python:3.8-slim

# 작업 디렉터리 설정
WORKDIR /app

# 필요한 패키지 설치
RUN pip install --no-cache-dir notebook

# NGINX 설치 및 설정
RUN apt-get update && apt-get install -y nginx && rm -rf /var/lib/apt/lists/*

# NGINX 설정 파일 복사
COPY nginx.conf /etc/nginx/nginx.conf

# Jupyter Notebook 실행 스크립트 복사
COPY start-notebook.sh /usr/local/bin/start-notebook.sh
RUN chmod +x /usr/local/bin/start-notebook.sh

# 포트 개방
EXPOSE 80 8888

# 시작 명령어 설정
CMD ["start-notebook.sh"]

 

NGINX 설정 파일 (nginx.conf)

events {}

http {
    server {
        listen 80;

        location /notebook {
            proxy_pass http://localhost:8888;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }

        location /otherservice {
            proxy_pass http://localhost:5000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

 

start-notebook.sh 파일

#!/bin/bash

# Jupyter Notebook 백그라운드에서 실행
jupyter notebook --ip=0.0.0.0 --port=8888 --no-browser --allow-root &

# NGINX 실행
nginx -g 'daemon off;'

 

반응형