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?

More than 3 years have passed since last update.

VSCode + Remote Containerで環境構築(Go・応用編)

Last updated at Posted at 2020-12-24

序文と謝辞

先日Go言語で簡単な方法を使ってリモートコンテナをつくりました(参考:VSCode + Remote Containerで環境構築(go編))が、作ったあと心の師匠(@MegaBlackLabel)からLGTMとともに以下のようなツッコミ天啓が。

数日後に本格的にアプリ作れというお上のお達しが入り、流石に先の環境では不十分だということが見えてきたため、この課題に改めて向き合ってそれっぽい環境を作ったので、改めてまとめます。

目次

1. 前提環境

これ以外には基本的に準備不要。Remote - containersのインストールがわからない場合は前記事(VSCode + Remote Containerで環境構築(go編))を参照。

Windows 10(Pro)で動作確認しているが、恐らくhome含め他OSでも問題ない(homeの場合は別途WSL2が必要)。

2. 作業フォルダの作成

今回はざっくり以下のような構成にします(".devcontainer"を除き、フォルダ名は任意です)。

go-proj
├─ .devcontainer
│    └─ devcontainer.json
├─ docker
│    └─ go
│        └─ Dockerfile
├─ src
└─ docker-compose.yml

トップディレクトリ以下を作成してください。各ファイルについては以降の項目で記載します。

3. コンテナ用のファイルを作成

フォルダ構成を変えた場合は適宜変更してください。

docker-compose.yml

(本記事通りに作る場合、トップディレクトリ"go-proj"下)

docker-compose.yml
version: '3.8'

services:
  app:
    build: ./docker/go/
    command: /bin/sh -c "while sleep 1000; do :; done"
    ports:
      - 8080:8080
    volumes:
      - ./src:/go/src:cached

Dockerfile

(本記事通りに作る場合、"go-proj/docker/go"下)

Dockerfile
# 本記事記載時点でのlatest
FROM golang:1.15

WORKDIR /go/src

ENV GO111MODULE=on
ENV GOPATH /go

RUN go get -v \
        golang.org/x/tools/gopls \
        github.com/ramya-rao-a/go-outline \
        github.com/sqs/goreturns

4. リモート用のコンテナ設定ファイルを作成

devcontainer.json

(本記事通りに作る場合、"go-proj/.devcontainer"下)

devcontainer.json
{
    "name": "go",

    "dockerComposeFile": [
        "../docker-compose.yml"
    ],

    "service": "app",
    "workspaceFolder": "/go/src",

    "settings": { 
        "terminal.integrated.shell.linux": null,
        "go.gopath": "/go"
    },

    "extensions": [
		"golang.go",
    ],

    "shutdownAction": "stopCompose"
}

5. コンテナの起動

VSCodeでプロジェクトフォルダを開き、コマンドパレットその他からRemote-Containers: Reopen in Containerを実行。

X. 参考記事

Go + echo + Docker + VSCode + Remote Containers で開発環境の構築 (ホットリロードとステップ実行対応):途中までを参考にした(realizeのメンテ絡みでこの手順通りの進行は記事現在使用不可)。余談だが、筆者はrealize→air(とecho→gin)で構築している。

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?