使用Docker搭建不需安装Go语言的Go开发环境

在不安装Go语言的情况下,构建Go语言开发环境的方法是使用一次性的Docker容器来执行go命令。虽然不需要安装golang,但基本上假设项目的源代码目录在GOPATH=~/go下存在。※由于使用Docker,所以需要安装Docker。

操作确认环境:macOS Catalina 10.15.8

我使用Atom和go-plus进行开发,保存时的测试运行等也似乎没有问题。

以下是执行”go mod init ${PWD:$(echo “$GPATH/src”|wc -c)}”命令的示例。

如果没有私有仓库

docker run --rm -v "$PWD":"${PWD:$#HOME}" -w "${PWD:$#HOME}" golang:1.14.12 go mod init ${PWD:$(echo “$GPATH/src”|wc -c)}

如果包含私有仓库的情况

适用于私有仓库 https://private-repo。

docker run —rm -v "$HOME/.ssh":"/root/.ssh":ro -v “$PWD”:”${PWD:$#HOME}” -w “${PWD:$#HOME}” --env GOPRIVATE="private-repo" golang:1.14.12 /bin/sh -c "git config --global url.ssh://git@private-repo.insteadOf https://private-repo && go mod init ${PWD:$(echo “$GPATH/src”|wc -c)}"

为了将特定仓库的 go get 切换为 SSH 连接,需要在容器中执行包含 go 命令的多个命令,因此使用了 /bin/sh 的 -c 选项。

注册并使用别名

尽管可以写成一行,但太长了,所以实际使用时,我会准备一个函数并注册别名后再使用。

alias go='golang'
alias goinit='golang mod init ${PWD:$(echo “$GPATH/src”|wc -c)}"'

golang() {
  USE_PRIVATE_REPO="git config --global url.ssh://git@private-repo.insteadOf https://private-repo"
  WORKDIR=$(echo "${PWD}" | awk '{print substr($0, index($0, "/go/"))}')
  docker run --rm                   \
  -v "${HOME}/.ssh":"/root/.ssh":ro \
  -v "${PWD}":"${WORKDIR}"          \
  -w "${WORKDIR}"                   \
  --env GOPRIVATE="private-repo"    \
  golang:1.14.12 /bin/sh -c "${USE_PRIVATE_REPO} && go $*"
}
source ~/.zshrc
广告
将在 10 秒后关闭
bannerAds