GoLandを使わずにVS codeとdockerでGoの環境構築してみた
俺はこいつと 旅に出る♪(ドカチュー!)
はい、久々の更新です。週1で更新してやらぁとか言ってといて何ですが、申し訳ございません!
今回ですが、Go言語を学ぶにあたり、通常の環境構築だと迷わずGoLandにすると思うのですが、
あまり利用しないにも関わらず課金するのもなんだかなという思いと、同時に使い慣れているDockerとVS codeで開発したいという思いから試してみました。
試行錯誤の上、なんとかできたのでまとめます。
※超初心者、及び自分へのメモとして普通のエンジニアの方ではそこまで記載しないよってレベルまで細かく記載します。
なお、前提条件は以下
目次
- Docker Desktop for Macをインストール
- VS codeのインストール
- 拡張機能のインストール
- Remote-Containersの設定をする
- コンテナの準備(compose作成→ volumeも同時に)
Docker Desktop for Macをインストール
Docker Desktopからチップを選んでdmgファイルをダウンロードする。
dmgファイルがDLされるのでダブルクリックすると、下記のポップアップよりクジラのマークをダブルクリックしてアプリをインストールする。
※ちなみに私の場合はこのクジラマークをダブルクリックすることが当初分からず、ひたすらdmgファイルをダブルクリックしてはこのポップアップが延々と出まくるという負のループで手こずった…多分自分だけ
VS codeのインストール
※日本語化については下記参照
junpei-sugiyama.com
拡張機能のインストール
VSCodeのExtensionであるRemote Containersをインストールする。
Dockerを動かしつつ、VS codeで開発していくのに必要なものです。
構造は下記です。
インストール手順について
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