最近手上收集了一些數據,想要分析一下。而後想起來好久前就打算給本身搭一個 Jupyter Lab 環境,擇日不如撞日,乾脆就今天搞定。python
Juptyer Notebook 是從 IPython 演變出來的在線交互式計算環境,能夠編寫文檔,這個文檔能夠包含代碼、文本(Markdown)、數學、圖標和富媒體。Jupyter Lab 是 Jupyter Notebook 的下一代用戶界面。nginx
單純跑一個 Jupyter 實際上是很簡單的:git
pip install jupyterlab
jupyter lab
複製代碼
上面的命令就能夠跑起來一個 Jupyter 了,只不過須要 Python 環境。github
由於我要跑在服務器上,不但願服務器的環境太過雜亂,這樣遷移起來就會很麻煩,因此最好跑在 Docker 裏。docker
不幸的是我在實踐 Docker 部署的過程當中踩了不少坑,腦殼都給踩懵了。並且這部分恰恰網上資料比較少,只有官方文檔和部分博客有涉及。因此我在此記錄下個人踩坑歷程,但願對後人有所幫助。shell
我大體就遇到了上面這些問題,各個都很奇葩。接下來,敬請觀賞我心酸的心路歷程:json
其實直接跑起來容器,是不會報錯的,可是這樣咱們的數據也就跟容器共生共死了,這可不能接受。api
因此須要將 Jupyter 的數據路徑映射到宿主機。接下來就出問題了,啓動報錯:跨域
Container must be run with group "users" to update files Executing the command: jupyter lab Traceback (most recent call last): File "/opt/conda/lib/python3.7/site-packages/traitlets/traitlets.py", line 528, in get value = obj._trait_values[self.name] KeyError: 'runtime_dir' During handling of the above exception, another exception occurred: Traceback (most recent call last): """堆棧信息隱藏掉""" PermissionError: [Errno 13] Permission denied: '/home/jovyan/.local' 複製代碼
開始我懷疑是 SELinux 搞鬼,設置後並無效果,並且其餘鏡像跑起來也很正常,一時間沒有想出什麼好辦法,只好直接將掛載的路徑權限改爲 777
後正常啓動了(原本是 755
)。這操做...明明其餘鏡像一樣權限都沒問題...bash
終於啓動成功了,很開心。可是初始化密碼的時候又把我給幹蒙了,直接報了 Http 500 錯誤。 看報錯是找不到 jupyter_notebook_config.json
文件,這個文件是 jupyter 的配置文件。找不到這個文件說明配置初始化失敗了,咱們能夠手動初始化,或者...多重啓幾遍服務(這個是真的有用)
exec
命令進入容器jupyter lab --generate-config
777
。執行 chmod 777 .jupyter/*
**注:**這個方法咱們遷移服務器的時候不須要再作一遍了,由於咱們的數據會備份,配置文件也在咱們備份的範圍內。
折騰好配置,終於能夠初始化密碼了。結果從新登陸的時候直接提示我密碼錯誤 Invalid credentials
。 我他媽的真的,要瘋了。 終於,我找到了解決方案。重啓兩遍服務就行了。GitHub issue
垃圾!
到這裏我已經心如止水了,報錯就報錯吧。淦!
還好這個問題比較容易搞定。看了下 log
[W 13:31:34.069 LabApp] Blocking Cross Origin API request for /api/contents/. Origin: https://jupyter.fxcdev.com, Host: toner-jupyter:8888
[W 13:31:34.069 LabApp] Not Found
[W 13:31:34.070 LabApp] 404 POST /api/contents/?1573306294042 (172.28.0.3) 1.76ms referer=https://jupyter.fxcdev.com/lab?
複製代碼
是跨域致使的。爲何會跨域呢? 由於走了 nginx 轉發,因此域名改變了。配置一下 nginx 就能夠了。 在 location 對象里加上 proxy_set_header Host $host;
完美解決問題。
文章比較亂,先綜述一下問題解決方式吧:
777
最後,終於能舒服的用上環境了,過陣子數據分析完了若是有所發現,我會放出來給你們看看~敬請期待!