VS Codeの拡張機能 “Remote – Containers” で、 ”A Tour of Go” をやったら便利だった

Docker
スポンサーリンク
Nishipy
Golangの勉強がしたかったので、VS Codeの拡張機能「Remote – Containers」を使って環境構築してみたときのメモです
スポンサーリンク

はじめに

「Programming Kubernetes」という本を読むために、Golangをはじめました。

Goの初心者が見るべきチュートリアルは、以下のようなサイトらしいです。

今回はそのうちの「Tour Of Go」をローカル環境やっていくために、VS Codeの拡張機能”Remote – Containers”でGoの環境を整えた時のメモを記します。(もちろんWebブラウザで経由でやることも可能)

この拡張機能を使うと、以下の図のようにローカルOS上に立ち上げたDockerコンテナの中で開発ができるので便利です。なお、図は公式サイトから引用しました。

https://code.visualstudio.com/assets/docs/remote/containers/architecture-containers.png

“Remote – Containers” は、以下のGitHubリポジトリで開発されています。

microsoft/vscode-dev-containers
A repository of development container definitions for the VS Code Remote - Containers extension and Visual Studio Online - microsoft/vscode-dev-containers

“Remote – Containers” を使って、 ”A Tour of Go”をやる

“Remote – Containers”で、Golangの環境を作成

ググったところ、Classmethodさんのこちらの記事に詳しく書いてあります。この通りに進めると、Golangの環境(Dockerコンテナ)が立ち上がります。

VSCodeとDockerでMacにGolangの開発環境を作成する | Developers.IO
Visual Studio CodeのExtension "Remote-Containers"を使ってMacにGolangの開発環境を作ってみた

.devcontainerディレクトリ及び必要ファイルの自動生成

まず、動画のように[Add Deployment Container Configuration File]-[Go golang:1]を選択すると、コンテナ起動に必要なファイルを生成されます。

自動生成されたファイルがこちらです。

  • Dockerfile

おなじみの、Dockerイメージをbuildするためのファイルです。中身はこんな感じです。コードはGitHubの公式リポジトリから拝借します。

golang:1 というイメージの上に、環境変数の設定とかパッケージやツールの追加をしていますね。細かいことは分からんけど。

  • devcontainer.json

もう1つの devcontainer.json は、この拡張機能特有のファイルのようですね。

こちらのリファレンスと見比べてみます。

パラメータ 説明
name Go コンテナの名前として表示
dockerFile Dockerfile Dockerfileを使う際には必須。Dockerfileのパスを指定
runArgs [ "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ] docer runコマンドのオプションを指定
settings "terminal.integrated.shell.linux": "/bin/bash",
"go.gopath": "/go"
コンテナ固有の設定を追加
extensions "ms-vscode.go" 作成時にコンテナ内にインストールする必要がある拡張機能を指定

開発環境用のコンテナは、既存のイメージとかdocker-composeを読み込ませて構築することもできるようなどで、いろんなパラメータがあります。今回は、Dockerfileを使ってイメージをbuildし、そのコンテナイメージをrunするみたいですので、このようなパラメータ構成になっています。



Golangの環境の実行

必要なファイルはできたので、あとは動画のように操作し、実行するだけです。初回起動時は、Dockerイメージのビルドが行われるので、少し時間がかかります。実行できるとVS Codeで表示されるTerminalが、Dockerコンテナのものになります。

試しにローカルマシン上でターミナルを新しく開いて、docker psしてみると、当然ながらちゃんとコンテナができていました。

ついでに、docker inspectで詳細をみて軽くおきます。

Mountsでは、VS Codeで開いているフォルダ/Users/nishipy/testdirが、コンテナ内の/workspaces/testdirとしてマウントされていることがわかります。またConfig.Cmdでは、コンテナが落ちないように、echo Container started ; while sleep 1; do :; doneという無限ループが書かれていますね。

作成した環境で、A Tour of Goをやる

VS Codeに表示されているTerminalから、下記ページの通りに操作します。

A Tour of Go

まず、go get github.com/atotto/go-tour-jp/gotourの後に、gotourと入力すると、Webサーバが立ち上がります。

そして、言われた通り、ブラウザから http://127.0.0.1:3999 に完了です!

簡単に環境構築できて、すごいと思いました(小並)

さいごに

ということで、無事環境構築でき、勉強を始められました!いきなり、Interfaceで挫折を味わいましたが、「Golang 完全に理解した」と言えるまで、戦い続けます。。。

以上.

コメント