如何运行CKAN docker映像?

如何运行CKAN docker映像?,docker,docker-compose,ckan,Docker,Docker Compose,Ckan,几天来,我一直在尝试以docker的形象运行。这位官员详细解释了如何通过“docker compose”创建自己的docker形象。基本工作流程是: 从GitHub克隆CKAN源文件 在“docker compose.yml”文件中进行一些更改(自定义密码、扩展名等) 运行“docker编写” 这将为您提供一个运行的CKAN docker容器以及所有必要的数据库和搜索引擎 然而,我的最终目标是将这个CKAN docker映像推送到docker Hub,并通过“docker run”在其他机器上运

几天来,我一直在尝试以docker的形象运行。这位官员详细解释了如何通过“docker compose”创建自己的docker形象。基本工作流程是:

  • 从GitHub克隆CKAN源文件
  • 在“docker compose.yml”文件中进行一些更改(自定义密码、扩展名等)
  • 运行“docker编写”
  • 这将为您提供一个运行的CKAN docker容器以及所有必要的数据库和搜索引擎

    然而,我的最终目标是将这个CKAN docker映像推送到docker Hub,并通过“docker run”在其他机器上运行它。我想使用此方法,因为我想广泛修改原始的CKAN安装,并在将其推送到docker hub之前将自定义数据集、组和组织添加到正在运行的目录中。“Docker run”似乎比使用“Docker compose”更简单、更方便

    问题在于:每当我尝试使用下面的命令运行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中将此变量设置为全局路径变量也没有帮助。我还尝试了不同版本的CKAN源代码。由于本文只解释了如何使用“docker compose”,而没有解释如何使用“docker run”,我怀疑“docker run”根本不可能。如果这是真的,为什么Docker中心会有一位官员?(这会引发与我自己使用“docker compose”构建映像完全相同的错误)如果无法使用docker Hub上的此映像,其目的是什么

    有没有办法在CKAN映像构建后“docker运行”它

    谢谢

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


    以docker compose命令的形式运行它如果您想从docker运行它,您需要分离docker文件并从.env文件发送一些参数,就像错误表明SQL_ALCHEMY未被发送一样


    我建议以docker compose的形式执行它。然后,一旦您从docker compose构建,您就可以执行docker run并发送缺少的参数,如SQL\u ALCHEMY。

    您可以发布您的docker-compose.yml文件吗?看起来它没有在环境变量中定义。@AlejandroGalera我附加了我的docker-compose.yml文件。这是我在“docker compose”中使用的一个。“docker run”还需要一个吗?如果是这样的话,我该如何使用它呢?谢谢,自从docker compose命令完美运行以来,这就是我最近几天一直在使用的。也许将来docker映像或ckan docker文档将得到更新。
    # 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