微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何运行CKAN码头工人映像?

如何解决如何运行CKAN码头工人映像?

我已经尝试了几天,将CKAN作为docker映像运行。官方CKAN documentation详细说明了如何通过“ docker-compose”创建自己的docker映像。基本工作流程是:

  1. 从GitHub复制CKAN源文件
  2. 在“ docker-compose.yml”文件中进行一些更改(自定义密码,扩展名等)
  3. 运行“ docker-compose”

这为您提供了一个正在运行的CKAN docker容器以及所有必需的数据库搜索引擎。

但是,我的最终目标是将该CKAN docker映像推送到Docker-Hub并通过“ docker run”在其他计算机上运行。我想使用此方法,因为我想广泛修改原始CKAN安装,并在将其推送到docker hub之前,还将自定义数据集,组和组织添加到正在运行的目录中。与使用“ Docker compose”相比,“ Docker run”似乎更容易和方便。

问题是:每当我尝试使用下面的命令运行CKAN容器时,我都会遇到以下错误

$ docker run -d --name db ckan/postgresql
$ docker run -d --name solr ckan/solr
$ docker run -d -p 80:80 --link db:db --link solr:solr ckan/ckan

ERROR: no CKAN_sqlALCHEMY_URL specified in docker-compose.yml

CKAN_sqlALCHEMY_URL肯定存在于docker-compose.yml文件中。在Windows中将此变量设置为全局PATH变量也无济于事。我还尝试了不同版本的CKAN源代码。由于CKAN documentation仅说明了如何使用“ docker-compose”,而没有说明如何使用“ docker run”,因此我怀疑“ docker run”根本不可能。如果是这样,为什么在Docker Hub上有官方的CKAN image? (这引发了与我自己使用“ docker-compose”构建映像完全相同的错误)如果无法使用,该映像在Docker Hub上的用途是什么?

构建CKAN映像后,是否有任何方法可以“ docker run”它?

谢谢!

编辑:以下是我的CKAN docker-compose.yml文件。 (变量存储在.env文件中)

# docker-compose build && docker-compose up -d
# If "docker-compose logs ckan" shows DB not ready,run "docker-compose restart ckan" a few times.
version: "3"

volumes:
  ckan_config:
  ckan_home:
  ckan_storage:
  pg_data:

services:
  ckan:
    container_name: ckan
    build:
      context: ../../
      args:
          - CKAN_SITE_URL=${CKAN_SITE_URL}
    links:
      - db
      - solr
      - redis
    ports:
      - "0.0.0.0:${CKAN_PORT}:5000"
    environment:
      # Defaults work with linked containers,change to use own Postgres,SolR,Redis or Datapusher
      - CKAN_sqlALCHEMY_URL=postgresql://ckan:${POSTGRES_PASSWORD}@db/ckan
      - CKAN_DATASTORE_WRITE_URL=postgresql://ckan:${POSTGRES_PASSWORD}@db/datastore
      - CKAN_DATASTORE_READ_URL=postgresql://datastore_ro:${DATASTORE_READONLY_PASSWORD}@db/datastore
      - CKAN_SOLR_URL=http://solr:8983/solr/ckan
      - CKAN_REdis_URL=redis://redis:6379/1
      - CKAN_DATAPUSHER_URL=http://datapusher:8800
      - CKAN_SITE_URL=${CKAN_SITE_URL}
      - CKAN_MAX_UPLOAD_SIZE_MB=${CKAN_MAX_UPLOAD_SIZE_MB}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
      - DS_RO_PASS=${DATASTORE_READONLY_PASSWORD}

    volumes:
      - ckan_config:/etc/ckan
      - ckan_home:/usr/lib/ckan
      - ckan_storage:/var/lib/ckan

  datapusher:
    container_name: datapusher
    image: clementmouchet/datapusher
    ports:
      - "8800:8800"

  db:
    container_name: db
    build:
      context: ../../
      dockerfile: contrib/docker/postgresql/Dockerfile
      args:
        - DS_RO_PASS=${DATASTORE_READONLY_PASSWORD}
        - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    environment:
      - DS_RO_PASS=${DATASTORE_READONLY_PASSWORD}
      - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
    volumes:
      - pg_data:/var/lib/postgresql/data

  solr:
    container_name: solr
    build:
      context: ../../
      dockerfile: contrib/docker/solr/Dockerfile


  redis:
    container_name: redis
    image: redis:latest

解决方法

如果要从docker运行它,请作为docker compose命令运行它,您需要拆分docker文件并从.env文件发送一些自变量,例如错误消息:未发送SQL_ALCHEMY。

我建议将其作为docker compose执行。然后从docker compose构建之后,您就可以执行docker run并发送缺少的参数,例如SQL_ALCHEMY。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。