GoLandを使わずにVS codeとdockerでGoの環境構築してみた

GoLandに さよならバイバイ♪

俺はこいつと 旅に出る♪(ドカチュー!)




はい、久々の更新です。週1で更新してやらぁとか言ってといて何ですが、申し訳ございません!


今回ですが、Go言語を学ぶにあたり、通常の環境構築だと迷わずGoLandにすると思うのですが、

あまり利用しないにも関わらず課金するのもなんだかなという思いと、同時に使い慣れているDockerとVS codeで開発したいという思いから試してみました。

試行錯誤の上、なんとかできたのでまとめます。

※超初心者、及び自分へのメモとして普通のエンジニアの方ではそこまで記載しないよってレベルまで細かく記載します。


なお、前提条件は以下

macOS Monterey
Apple M1
・Docker Desktop 4.7.0

目次
- Docker Desktop for Macをインストール
- VS codeのインストール
- 拡張機能のインストール
- Remote-Containersの設定をする
- コンテナの準備(compose作成→ volumeも同時に)



Docker Desktop for Macをインストール

Docker Desktopからチップを選んでdmgファイルをダウンロードする。

dmgファイルがDLされるのでダブルクリックすると、下記のポップアップよりクジラのマークをダブルクリックしてアプリをインストールする。

※ちなみに私の場合はこのクジラマークをダブルクリックすることが当初分からず、ひたすらdmgファイルをダブルクリックしてはこのポップアップが延々と出まくるという負のループで手こずった…多分自分だけ





VS codeのインストール

こちらからVS codeをインストール


※日本語化については下記参照
junpei-sugiyama.com




拡張機能のインストール

VSCodeのExtensionであるRemote Containersをインストールする。

Dockerを動かしつつ、VS codeで開発していくのに必要なものです。

構造は下記です。

code.visualstudio.com


インストール手順について

VSCodeの[歯車アイコン]->[拡張機能]をクリック

VS codeの左タブにある検索窓で「remote - containers」と入力し、Remote – Containersが出てくるのでインストール




Remote-Containersの設定をする

実際に開発で利用するディレクトリをVSCodeで開いて、設定を行います。 

Window左下のこのマークをクリックして

検索窓に「remote」と入力して、「Remote-Containers: Add Development Container Configuration Files...」がでてくるので、選択。

その後、再度上記の検索窓から「Remote-Containers: Add Development Container Configuration Files...」を選択。

検索窓にて「go」を入力し、Goを選択。

バージョン選択後、「OK」ボタンが出てくるので、OKをクリック。
右下に出てくるポップアップウィンドウの「Reopen in Container」をクリック。

以上でRemote-Containersの設定は完了!




コンテナの準備(compose作成→ volumeも同時に)

開発を行いたいディレクトリをマウントするため、docker-compose.ymlを作ります。


docker-compose.yml

version: "3"

services:
  golang:
    image: golang:1.9.3-alpine3.7
    tty: true
    volumes:
      - ./:/go
    environment:
      - "GOPATH=/go"

コンテナの中に入る

$ docker-compose exec golang ash
/go # echo $GOPATH
/go

goが入っているのが確認できます。

次にマウントできているか確認します。

$ docker-compose exec golang ash
/go # ls -la

docker-compose.yml
ファイルが確認できたのでマウントできたことがわかります。
これで完了!

ちなみに私は上記の手順を実行しても、最初はなぜかマウントが確認できなかったのですが、VS codeを再起動すると成功しました!

あと、Dockerfileかdocker-composeの議論があるようですね。

https://shura.design/2020/08/11/archives/2604shura.design


以上!

参考文献

https://qiita.com/masakurapa/items/fa867451053e41b69126
qiita.com

https://yamavlog.com/environment-vscode-docker-golang-mac/
yamavlog.com