ArcGIS API For Python 00-1 - 基於Docker配置ArcGIS API for Python

這篇文章呢,向大家介紹Linux系統通過Docker配置ArcGIS API for Python的幾種方式。

第一種:使用Esri提供的Docker鏡像

Esri在Docker Hub上傳了ArcGIS API for Python的鏡像,名稱爲arcgis-api-python-notebook

安裝

安裝方式很簡單,像安裝其他Docker鏡像一樣,使用命令docker pull esridocker/arcgis-api-python-notebook就可以拉取該鏡像。

運行

拉取鏡像後,通過命令docker run -it -p <localport>:8888 esridocker/arcgis-api-python-notebook可運行該鏡像,其中localport是宿主機的端口,一般爲了方便可以也設置爲8888。

運行成功後會有如下提示:

[I 06:13:47.922 NotebookApp] Writing notebook server cookie secret to /home/jovyan/.local/share/jupyter/runtime/notebook_cookie_secret
[I 06:13:48.182 NotebookApp] JupyterLab extension loaded from /opt/conda/lib/python3.6/site-packages/jupyterlab
[I 06:13:48.182 NotebookApp] JupyterLab application directory is /opt/conda/share/jupyter/lab
[I 06:13:48.184 NotebookApp] Serving notebooks from local directory: /home/jovyan
[I 06:13:48.184 NotebookApp] The Jupyter Notebook is running at:
[I 06:13:48.184 NotebookApp] http://(d95711aca0c2 or 127.0.0.1):8888/?token=0885e534993aadec8acce8eb8c6f57a8528ddf0355bb19d9
[I 06:13:48.184 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[C 06:13:48.184 NotebookApp] 
    
    Copy/paste this URL into your browser when you connect for the first time,
    to login with a token:
        http://(d95711aca0c2 or 127.0.0.1):8888/?token=0885e534993aadec8acce8eb8c6f57a8528ddf0355bb19d9

記住最後一行的token的值,第一次在網頁上訪問Jupyter Notebook時需要輸入token或者密碼。

如果不想運行後一直看到這些信息(畢竟還需要處理其他的工作),可以在運行時添加-d參數,也就是像這樣docker run -d -it -p <localport>:8888 esridocker/arcgis-api-python-notebook

這樣運行後,不會看到上面的那些信息。那麼如何獲取到token來訪問呢?很簡單哦,僅需要2步:

  • 使用命令docker exec -it <docker_container_id> /bin/bash
  • 敲入命令jupyter notebook list,查看當前運行的notebook server,其中就有token
  • 最後,使用命令exit退出當前容器

侷限

這種方式的優點就是很方便,不需要額外的安裝包就能使用ArcGIS API for Python。但是,它也有使用侷限,就是沒有提供root用戶的密碼。

沒有root用戶密碼,就不能修改某些系統文件,或者安裝某些包,比如:

  • 不能修改hosts文件用來添加本地Enterprise的IP和域名對應關係,這樣就會導致使用本地Enterprise初始化GIS實例時會報錯
  • 不能配置本地保存資格證書,詳細內容請查看另一篇博客

第二種:使用Anaconda3鏡像配置ArcGIS API for Python

這種方式,首先是拉取Anaconda3的鏡像,然後在其中依次安裝Jupyter Notebook和arcgis。

安裝

我們需要從網上拉取Anaconda3鏡像,使用命令是docker pull continuumio/anaconda3

運行

拉取Anaconda3的鏡像後,使用命令docker run -d -i -t -p 8888:8888 continuumio/anaconda3 /bin/bash -c "/opt/conda/bin/conda install jupyter -y --quiet && mkdir /opt/notebooks && /opt/conda/bin/jupyter notebook --notebook-dir=/opt/notebooks --ip='*' --port=8888 --no-browser --allow-root"
在運行該鏡像時,會執行-c參數傳入的命令,安裝Jupyter Notebook。

安裝成功後,使用命令docker exec -it <docker_container_id> /bin/bash進入容器,然後安裝arcgis包:conda install -c esri arcgis

然後,使用命令jupyter notebook list查看token。

最後,使用命令exit退出當前容器。

在瀏覽器端輸入http://<ip>:8888訪問Notebook Server,輸入以下代碼測試環境是否配置完成:

from arcgis.gis import GIS
gis = GIS()
gis.properties.portalName

如果輸出結果爲ArcGIS Online表示環境配置成功。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章