我尝试创建一个Dockerfile,安装所有组件以运行Go,安装GVM (Go Version Management),以及安装特定的Go版本。
当我尝试使用:
构建容器时docker build -t ##### .
我收到此错误:
/ bin / sh:1:gvm:not found
命令' / bin / sh -c gvm install go1.4 -B'返回非零代码:127
安装在这里:
/root/.gvm/scripts/env/gvm
/root/.gvm/scripts/gvm
/root/.gvm/bin/gvm
它显然能够安装GVM但无法使用它。为什么?
我想也许我需要刷新.bashrc
或.bash_profile
......但这不起作用,因为它们不存在。
FROM #####/#####
#Installing Golang dependencies
RUN apt-get -y install curl git mercurial make binutils bison gcc build-essential
#Installing Golang
RUN ["/bin/bash", "-c", "bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)"]
#gvm does not exist here... why?
RUN gvm install go1.4 -B
RUN gvm use go1.4
为什么似乎没有安装GVM?我如何摆脱错误?
答案 0 :(得分:1)
您的shell为/bin/sh
,但gvm
将其初始化设置为~/.bashrc
,并且期望/bin/bash
。
您需要获取gvm
初始化脚本以从非交互式bash shell运行命令:
RUN ["/bin/bash", "-c", ". /root/.gvm/scripts/gvm && gvm install go1.4 -B"]
RUN ["/bin/bash", "-c", ". /root/.gvm/scripts/gvm && gvm use go1.4"]
或者甚至更好的方法是将您想要执行的命令放在一个bash脚本中并将其添加到图像中。
#!/bin/bash
set -e
source /root/.gvm/scripts/gvm
gvm install go1.4
gvm use go1.4