【问题标题】:How can I pass a external environment variable to drone docker runner?如何将外部环境变量传递给无人机 docker runner?
【发布时间】:2019-10-13 15:55:04
【问题描述】:

场景是:我要执行docker run & push in docker runner,而docker registry和docker runner在同一个服务器。所以我想将主机 ip 作为变量传递到无人机管道容器中,这样我就可以在没有远程注册表服务器的情况下推送 docker 映像。但似乎只有无人机允许的环境变量可以在'${}'中使用。我尝试在主机中导出 EXTERNALIP 并尝试获取 ${EXTERNALIP} 但一无所获。 那么有什么方法可以让我获得外部 ip 来与 localhost 通信或其他方式来实现这一点?

【问题讨论】:

    标签: drone.io


    【解决方案1】:

    如果它在同一主机上,您应该能够推送到 localhost,也就是说,我无法使用包插件执行此操作,但能够使用直接 docker 进行复制:

    steps:
    - name: docker-${DRONE_EVENT}
      image: docker:19.03
      when:
        event: [ push, pull_request ]
        status: [ success ]
      environment:
        DOCKER_PASSWORD:
          from_secret: docker_password
      commands:
        - echo $DOCKER_PASSWORD | docker login --username user_name --password-stdin localhost
        - docker build -t localhost/demo-web:latest .
        - if [ "${DRONE_EVENT}" == "push" ]; then docker push localhost/demo-web:latest; fi;
      volumes:
        - name: docker-socket
          path: /var/run/docker.sock
    
    volumes:
    - name: docker-socket
      host:
        path:
          /var/run/docker.sock
    

    几个注意事项,显然您需要在 repo 配置中拥有trusted 访问权限,如果使用本地 exec,则需要拥有 --trusted 访问权限。尽情享受吧!

    【讨论】:

    • 秘密是from secret 行哈哈谢谢老兄。
    猜你喜欢
    • 2019-06-02
    • 2020-11-07
    • 2015-08-10
    • 2018-08-23
    • 2021-06-25
    • 2018-03-24
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多