首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何运行CKAN码头映像?

如何运行CKAN码头映像?
EN

Stack Overflow用户
提问于 2020-09-22 07:48:03
回答 1查看 789关注 0票数 2

几天来,我一直试图将CKAN作为码头映像运行。官方的CKAN文档详细解释了如何通过“对接-合成”来创建自己的对接者形象。基本工作流程是:

  1. 从GitHub克隆CKAN源文件
  2. 在"docker-compose.yml“文件中进行一些更改(自定义密码、扩展名等)
  3. 运行“码头-合成”

这将为您提供一个正在运行的CKAN停靠容器以及所有必要的数据库和搜索引擎。

然而,我的最终目标是将这个CKAN码头映像推到docker,并通过“码头运行”在其他机器上运行它。我想使用这个分配,因为我希望广泛地修改原始的CKAN安装,并在将它推送到停靠中心之前将自定义数据集、组和组织添加到正在运行的目录中。与使用“码头组合”相比,“码头运行”似乎更容易、更方便。

的问题是:每当我试图使用下面的命令运行CKAN容器时,就会出现以下错误:

代码语言:javascript
复制
$ 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中的全局路径变量也没有帮助。我还尝试了不同版本的CKAN源代码。由于CKAN文档只解释了如何使用“对接-组合”,而没有解释如何使用“停靠运行”,因此我怀疑“停靠运行”是不可能的。如果这是真的,为什么码头集线器上有官方的CKAN图像?(这会抛出完全相同的错误,就像我自己使用“对接-撰写”构建映像一样)如果不能使用这个映像在码头集线器上的目的是什么?

有任何方法“码头运行”的CKAN映像一旦建立?

谢谢!

编辑:下面是我的CKAN坞-Compose.yml文件。(变量存储在.env文件中)

代码语言:javascript
复制
# 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-15 17:28:09

运行它作为一个码头组合命令,如果你想要运行它从码头,你需要分开码头文件,并发送一些参数从.env文件,如错误,说SQL_ALCHEMY没有被发送。

我建议把它作为码头写作来执行。然后,一旦您从docker构建,您就可以执行docker并发送缺少的参数,比如SQL_ALCHEMY。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64005263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档