1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DockerでGo開発環境を構築する (Vim/Neovim編)

Posted at

モチベーション

  • Dockerを使ってクリーンな開発環境を構築したい
  • Vim(Neovim)でGo言語を書きたい

Dockerfileの作成

以下が,Go開発環境を構築するためのDockerfileです.

FROM ubuntu:latest

# 共通の依存関係をインストール
RUN apt-get update -y \
    && apt-get install -y \
    software-properties-common \
    curl \
    git \
    build-essential \
    python3 \
    python3-pip \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Goをインストール
RUN add-apt-repository ppa:longsleep/golang-backports -y \
    && apt-get update -y \
    && apt-get install -y golang-go \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# Node.jsとnpmをインストール
RUN curl -sL https://deb.nodesource.com/setup_lts.x | bash - \
    && apt-get update -y \
    && apt-get install -y nodejs \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# NeovimをPPAからインストール (stable版)
RUN add-apt-repository ppa:neovim-ppa/stable -y \
    && apt-get update -y \
    && apt-get install -y neovim \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

ENV GOPATH=/root/go
ENV PATH=$PATH:/usr/local/go/bin:$GOPATH/bin
ENV NODE_ENV=development

# 必要なディレクトリを作成
RUN mkdir -p $GOPATH \
    && mkdir -p /root/.config/nvim/ \
    && mkdir -p /root/.local/share/nvim/site/autoload

# vim-plugをインストール
RUN curl -fLo /root/.local/share/nvim/site/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

# 設定ファイルをコピー
COPY init.vim /root/.config/nvim/init.vim
COPY coc-settings.json /root/.config/nvim/coc-settings.json

# Neovimプラグインをインストール
RUN nvim -u /root/.config/nvim/init.vim +PlugInstall +qall

# srcディレクトリを作成
RUN mkdir -p /root/src

WORKDIR /root/src

解説:

  • ベースイメージ: ubuntu:latestを使用
  • 共通依存関係のインストール: curl,git,build-essential,python3,python3-pipなど開発に必要なツールをインストールします.

PythonはスニペットプラグインのUltiSnipsを使用するためにインストールします.UltiSnipsの使用にはPython環境が必要です.

  • Goのインストール: longsleep/golang-backports PPAを使用してGoをインストールします.

PPAについては以下が参考になります.

  • Node.jsとnpmのインストール: NodeSourceのAPTリポジトリを使用してNode.jsとnpmをインストールします.

Node.jsは補完エンジンのcoc.nvimを使用するためにインストールします.coc.nvimの使用にはNode.jsの環境が必要です.

  • 設定ファイルのコピー: ローカルのinit.vimとcoc-settings.jsonをコンテナ内にコピーします.

  • Neovimのインストール: Neovimをneovim-ppa/stable PPAからインストールします.

  • vim-plugのインストール: プラグインマネージャーとしてvim-plugをインストールします.

設定ファイル

COPYする設定ファイルには以下を記述

init.vim
call plug#begin()

(省略)

" vim-goプラグインのインストールとバイナリインストール
Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries' }

" coc.nvimプラグインのインストール
Plug 'neoclide/coc.nvim', {'branch': 'release'}

" ultisnipsプラグインのインストール
Plug 'SirVer/ultisnips'

(省略)

call plug#end()
coc-settings.json
{
  "languageserver": {
    "golang": {
      "command": "gopls",
      "rootPatterns": ["go.work", "go.mod", ".vim/", ".git/", ".hg/"],
      "filetypes": ["go"],
      "initializationOptions": {
        "usePlaceholders": true
      }
    }
  }
}

イメージのビルドとコンテナを実行

docker image build --tag go .
docker container run --name go -it go bash
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?