如何在超级分层结构链代码容器中设置环境变量

时间:2018-02-12 11:39:54

标签: docker docker-compose hyperledger-fabric

由于我的链代码将在每个链代码容器上执行,我想在每个链代码容器中设置环境变量,以便我可以在我的链代码中使用此环境变量。

我无权创建链代码容器。它将在链代码实例化时自动创建(每个对等体一个docker容器)。所以我没有任何控制来在chaincode容器中设置环境变量。

我还认为更新和提交链代码容器,但如果有更多的支持对等,那么这可能会带来不必要的延迟。所以根据我的理解,最好的方法是在容器创建时设置环境变量。

请让我知道如何解决上述问题?

2 个答案:

答案 0 :(得分:0)

您不想设置环境变量。如果有某种类型的"配置"设置你需要传递到chaincode然后你应该将它作为参数传递给Init函数,然后使用PutState保存值并根据需要使用GetState检索它。

答案 1 :(得分:0)

  1. 如果要在运行容器之前设置环境变量,请使用--env命令的docker run参数:

    $ docker run --help
    ...
    -e, --env list                       Set environment variables
    --env-file list                  Read in a file of environment variables
    

    使用-e--env--env-file标志在您正在运行的容器中设置简单(非数组)环境变量,或覆盖在您正在运行的映像的Dockerfile。更多信息是here

    docker run -e MYVAR1 --env MYVAR2=foo --env-file ./env.list ubuntu bash
    
  2. 如果要在运行容器后设置环境变量,Docker目前不允许这样做。看到这些问题:

    https://github.com/moby/moby/issues/8838

    https://github.com/moby/moby/issues/7561

      

    现在Docker一旦创建就无法更改容器的配置,通常这是可以的,因为创建一个新容器是微不足道的