使用Docker容器快速部署ODC (Open Data Cube)

举报
tsjsdbd 发表于 2022/04/11 10:17:44 2022/04/11
【摘要】 使用Docker容器,快速部署ODC (Open Data Cube)

 

 

一、            整体架构

Open Data Cube ODC)是一个新型的开源的地球观测数据(其实就是遥感照片)管理与分析平台,适合进行时间序列数据的高性能计算和探索性数据分析(其实就像个“数据库”)。


只要是Linux的软件,Docker容器都可以一把拉起来,不需要和其他人那样安装各种依赖库,方便。

 

所以本文全程使用Docker容器。 整体过程,按照docker-compose模板

https://github.com/opendatacube/cube-in-a-box/blob/main/docker-compose.yml

(注:但未使用docker-compose,而是单纯采用docker手动启动)

 

一、            准备镜像

总共需要3个镜像。

1.    前2个镜像直接下载

docker pull postgis/postgis:12-2.5

docker pull schaffdev/port_check:latest

其中后面那个镜像,好像没什么用,只是做了些“健康检查”。本次操作忽略这个镜像。

 

2.    第3个镜像-下载现成的

本来看ODC仓库,感觉这个odc镜像是需要自己打包的(看下一章节)。不过发现https://github.com/opendatacube/cube-in-a-box/blob/main/docker-compose-prod.yml

这个里面有个现成的,下载下来发现也可以直接用。

docker pull opendatacube/cube-in-a-box:latest

 

 

3.    第3个镜像-自己打包方式

注:如果要自己打包odc镜像,可以参考当前章节。偷懒的话,就跳过。

 

因为开发环境是内网不方便联网,直接手动执行如下dockerfile内容

https://github.com/opendatacube/cube-in-a-box/blob/main/Dockerfile

 

首先下载tini程序:

https://github.com/krallin/tini/releases/download/v0.19.0/tini

 

下载基础镜像

docker pull osgeo/gdal:ubuntu-small-3.3.1

 

重新dockerfile

FROM osgeo/gdal:ubuntu-small-3.3.1

ENV DEBIAN_FRONTEND=noninteractive \
LC_ALL=C.UTF-8 \
http_proxy=http://100.173.102.252:3128/ \
    LANG=C.UTF-8

COPY ./tini /tini
RUN chmod +x /tini

RUN cp -a /etc/apt/sources.list /etc/apt/sources.list.bak && \
sed -i "s@http://.*archive.ubuntu.com@http://mirrors.tools.huawei.com@g" /etc/apt/sources.list && \
sed -i "s@http://.*security.ubuntu.com@http://mirrors.tools.huawei.com@g" /etc/apt/sources.list

RUN apt-get update && \
    apt-get install -y \
      build-essential \
      git \
      # For Psycopg2
      libpq-dev python3-dev \
      python3-pip \
      wget \
    && apt-get autoclean \
    && apt-get autoremove \
    && rm -rf /var/lib/{apt,dpkg,cache,log}

COPY requirements.txt /conf/
COPY products.csv /conf/

RUN http_proxy=http://100.173.102.252:3128/ pip3 install --no-cache-dir --requirement /conf/requirements.txt

WORKDIR /notebooks

ENTRYPOINT ["/tini", "--"]

CMD ["jupyter", "notebook", "--allow-root", "--ip='0.0.0.0'", "--NotebookApp.token='secretpassword'"]

使用该dockerfile,使用docker build构建镜像。

 

或者按照dockerfile的内容,一步一步执行,在最后使用commit模式完成打包。

docker commit --change='ENTRYPOINT ["/tini", "--"]' --change='CMD ["jupyter", "notebook", "--allow-root", "--ip='0.0.0.0'", "--NotebookApp.token='secretpassword'"]' d3ad84b28a50 odc-jupyter:tsj

生产一个 odc-jupyter:tsj 的镜像

 

总共3个镜像准备好了。

 

二、            启动ODC组件

这里整个启动过程,参考 docker-compose.yml 内容

1.    启动postgres

docker run -d -e POSTGRES_DB=opendatacube -e POSTGRES_PASSWORD=opendatacubepassword -e POSTGRES_USER=opendatacube -v /home/tsjsdbd/cube-in-a-box/tsjsdbd/data/pg:/var/lib/postgresql/data postgis/postgis:12-2.5

 

获取数据库Postgres容器的IP地址(odc需要连接这个地址),通过docker inspect 命令

我这里查到postgres容器IP为:172.17.0.7

 

2.    启动ODC

这里用我手动打包的odc镜像启动(下一章节,是直接下载的odc镜像验证)

docker run -d -e DB_HOSTNAME=postgres -e DB_USERNAME=opendatacube -e DB_PASSWORD=opendatacubepassword -e DB_DATABASE=opendatacube -e AWS_NO_SIGN_REQUEST=true -e CIABPASSWORD=tsjsdbd -v /home/tsjsdbd/cube-in-a-box/notebooks:/notebooks -v /home/tsjsdbd/cube-in-a-box/products.csv:/products.csv -v /home/tsjsdbd/cube-in-a-box/tini:/tini --add-host=postgres:172.17.0.7 -p 8080:8888 odc-jupyter:tsj

 

注意上面的

--add-host=postgres:172.17.0.7

表示,域名“postgres”的解析结果为 “172.17.0.7”,即指向刚才启动的db容器。

 

ODC启动成功后,登录到odc容器内部,执行初始化操作:

datacube system init

 

三、            验证ODC

这里直接使用官方打好的镜像镜像验证

docker run -d -p 443:8888 -e DB_HOSTNAME=postgres -e DB_USERNAME=opendatacube -e DB_PASSWORD=opendatacubepassword -e DB_DATABASE=opendatacube -e AWS_NO_SIGN_REQUEST=true -e CIABPASSWORD=tsjsdbd -v /home/tsjsdbd/cube-in-a-box/odctest:/home/odctest --add-host=postgres:172.17.0.7 opendatacube/cube-in-a-box

启动后,在容器里面,执行odc的功能验证,如:

datacube product add DEM_product.yaml

 

同时,还可以通过Chrome浏览器(如上面我使用443端口),登录刚才odc容器。

打开 Notebook ,对odc进行交互式的使用。

登录密码是:secretpassword,可以从 docker inspect 看到:


 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。