LoginSignup
36
31

More than 5 years have passed since last update.

DockerでGoの開発環境構築

Posted at

背景

へっぽこプログラマーですが、なんとなくGo言語を勉強し始めたら、面白くてはまってしまったので、どこでも手軽にGoの開発環境が作れるようにDockerイメージを作ってみました。公式のgolangイメージもありますが、勉強もかねて1から作ってみたかったのと、vim-goなどのツールも入れて、コンテナ内で開発を完結できるようにしたかったので、自作しました。

前提条件

環境は下記の通りです。

項目 概要
動作環境 macOS Sierra
Docker Version 1.13.1
Base Image ubuntu (latest, 16.04)
CPU amd64
Go Version 1.7.5

Base Imageは筆者の好みでubuntu (latest ※執筆時点では16.04) を使用していますが、もう少し軽量なImageを使ってもいいかもしれません。

Dockerイメージ作成

Dockerfileは下記の通りです。

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コマンド
$ docker build -t godev .

作成したイメージを利用

では、作成したイメージを使ってみましょう。
コンテナを立ち上げます。

dockerコマンド
$ docker run -it godev

シェルが立ち上げるので、vimで拡張子がgoのファイルの編集をしてみます。

$ vi main.go

Goのテンプレートが立ち上がります。インデントも自動です。Ctrl+x Ctrl+oでコード補完も可能です。.vimrcは最低限の設定しかしていませんので、必要に応じてカスタマイズしていただければ。

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

簡単ですがこれで最低限のGoの開発環境が整いました。あとは煮るなり焼くなりして必要に応じてカスタマイズしていければいいですね。

まとめ

Goの開発環境をどこでも手軽に作りたかったので、dockerで最低限の開発環境を作ってみました。これからどんどんGoで遊んでいきたいと思います。

36
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
31