使用Docker来构建Go开发环境

背景

我是一个业余程序员,但开始学习Go语言后,发现它非常有趣,迷失其中。所以我制作了一个Docker镜像,可以在任何地方轻松搭建Go的开发环境。虽然有官方的golang镜像,但我想自己从头开始制作,以兼顾学习,并且我还安装了vim-go等工具,希望能够在容器内完成整个开发过程,所以我自己动手制作了这个镜像。

前提条件 (Qian ti tiao jian)

以下是环境的描述。

項目概要動作環境macOS SierraDocker Version1.13.1Base Imageubuntu (latest, 16.04)CPUamd64Go Version1.7.5

有一种可能性是可以使用更轻量级的Base Image, 虽然作者喜欢使用最新的ubuntu(最新迭代为16.04)作为Base Image。

创建Docker镜像

以下是Dockerfile的内容。

FROM ubuntu:latest

MAINTAINER hogehoge

ENV ARCH amd64
ENV GOVERSION 1.7.5
ENV HOME /root
ENV PATH $PATH:/usr/local/go/bin
ENV GOPATH $HOME/work

RUN apt-get update -y \
    && apt-get install vim curl git -y \
    && curl -s -o /tmp/go.tar.gz https://storage.googleapis.com/golang/go$GOVERSION.linux-$ARCH.tar.gz \
    && tar -C /usr/local -xzf /tmp/go.tar.gz \
    && rm /tmp/go.tar.gz \
    && curl -s -fLo /root/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim \
    && echo "let g:go_fmt_command = \"goimports\"" >> $HOME/.vimrc \
    && echo "filetype plugin indent on" >> $HOME/.vimrc \
    && git clone https://github.com/fatih/vim-go.git $HOME/.vim/pack/plugins/start/vim-go \
    && go get github.com/nsf/gocode \
          github.com/alecthomas/gometalinter \
          golang.org/x/tools/cmd/goimports \
          golang.org/x/tools/cmd/guru \
          golang.org/x/tools/cmd/gorename \
          github.com/golang/lint/golint \
          github.com/rogpeppe/godef \
          github.com/kisielk/errcheck \
          github.com/jstemmer/gotags \
          github.com/klauspost/asmfmt/cmd/asmfmt \
          github.com/fatih/motion \
          github.com/zmb3/gogetdoc \
          github.com/zmb3/gogetdoc \
          github.com/josharian/impl

WORKDIR $HOME/work

如果在CUI环境下进行环境搭建,你可以使用vim的:GoInstallBinaries命令来很方便地安装。但是如果在Dockerfile中操作,会在镜像构建的过程中需要用户输入,似乎无法顺利进行,所以我逐个地进行了耐心安装。

  && go get github.com/nsf/gocode \
        github.com/alecthomas/gometalinter \
            .
            .
            .
            github.com/josharian/impl

只需要使用以下命令在包含上述Dockerfile的目录下创建镜像即可完成。

$ docker build -t godev .

使用已创建的图像

让我们使用已创建的图像进行尝试。
启动容器。

$ docker run -it godev

由于Shell的启动,我们将尝试在vim中编辑扩展名为go的文件。

$ vi main.go

打开Go的模版,缩进也会自动完成。您可以使用Ctrl+x Ctrl+o进行代码补全。由于.vimrc只进行了最基本的设置,所以您可以根据需要进行自定义。

スクリーンショット 2017-02-14 22.15.50.png

虽然很简单,但是通过这个最基本的Go开发环境已准备好了。接下来根据需要,可以随意修改、定制,就像煮饭或烤肉一样。

总结

因为我想要在任何地方都能方便地建立Go的开发环境,所以我用Docker创建了一个最基本的开发环境。接下来我想要玩得更多Go。

广告
将在 10 秒后关闭
bannerAds