【问题标题】:run GO111MODULE=on go install . ./cmd/... in cloud init运行 GO111MODULE=on go install 。 ./cmd/... 在云初始化中
【发布时间】:2022-01-01 10:07:08
【问题描述】:

我有一个使用 cloud init 部署的 bash 脚本,我的 bash 脚本包含以下部分代码

GO111MODULE=on go install . ./cmd/...

直接在已部署服务器的终端中运行我的 bash 脚本时,它按预期工作。但是当我在云配置中使用 runcmd 运行它时,这部分脚本:

GO111MODULE=on go install . ./cmd/...

没有被执行,有人知道为什么吗?

    runcmd:
  - [ bash, /usr/local/bin/myscript.sh ]

【问题讨论】:

    标签: go server cloud cloud-init


    【解决方案1】:

    runcmd 中的正确 shell 执行将是(如在 Cloud config examples 中所见):

    - [ bash, -c, /usr/local/bin/myscript.sh ]
    

    或:

    - [ /usr/local/bin/myscript.sh ]
    

    假设您的脚本以 shebang #!/bin/bash 开头

    另外,您需要在脚本中添加任何环境变量,因为Cloud config examples 不包含任何明显的设置方式。

    #!/bin/bash
    export GO111MODULE=on
    export ...
    

    【讨论】:

    • myscript.sh 使用 runcmd 执行,但是 GO111MODULE=on 的部分没有执行,或者确实执行但路径错误,不确定!!直接在服务器上运行 myscript.sh,工作正常
    • @iFadi 我将在您的脚本myscript.sh 中添加export GO111MODULE=on inside,并确保使用bash -c 调用所述脚本。
    • 感谢提示,但它仍然不起作用,我在 /var/log/syslog 下发现执行 GO 命令后出现以下错误:build cache is required, but could not be located: GOCACHE is not defined and neither $XDG_CACHE_HOME nor $HOME are defined 我不知道如何修复它.
    • @iFadi 我已经编辑了答案以包含环境变量。
    【解决方案2】:

    感谢 VonC 的提示,我能够解决此问题。我将以下内容添加到 myscript.sh

    GOCACHE=/root/.cache/go-build
    export GOCACHE
    export GO111MODULE=on
    go install . ./cmd/...
    
    
    runcmd:
    - [ bash, -c, /usr/local/bin/myscript.sh ]
    

    脚本现在从 cloud-init 部署和运行。

    【讨论】:

    • 干得好。赞成。
    猜你喜欢
    • 2015-09-18
    • 1970-01-01
    • 2019-11-02
    • 2021-10-26
    • 2019-06-05
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 2021-09-01
    相关资源
    最近更新 更多