最終更新:2020/05/01
1. VSCodeとDockerの連携
VSCodeとDockerを連携させることで、Dockerコンテナ内の環境をVSCodeで利用することができます。
このことにより、
- 開発者全員の開発環境を完全に同じにできる
- localマシンのOSに依存しない開発環境を構築できる
- ライブラリインストールによってlocalマシンの環境に影響が出てしまうことを防ぐ
というメリットを享受することができます。
2. Remote - Containers
VSCodeに Remote - Containers 拡張をインストールします。
VSCodeの準備は以上で完了です。
3. .devcontainerフォルダ作成
.devcontainerフォルダを作成します。
mkdir .devcontainer
このフォルダの中に
- devcontainer.json
- docker-compose.extend.yml
を作成します。
touch .devcontainer/devcontainer.json
touch .devcontainer/docker-compose.extend.yml
devcontainer.jsonはVSCodeが起動するコンテナの開発環境Dev Containerについての設定ファイルです。
以下のようにdevcontainer.jsonの設定をします。
{
"name": "golang-marsa",
"dockerComposeFile": [
"../docker-compose.yml"
],
"service": "golang-marsa",
"workspaceFolder": "/go/src/github.com/java-lang-programming/marsa",
"extensions": [
"ms-vscode.go"
],
"settings": {
"go.gopath": "/go",
"go.inferGopath": true,
"go.useLanguageServer": true,
"go.formatTool": "goimports",
"go.lintFlags": ["--enable-all", "--new"],
},
"shutdownAction": "stopCompose"
}
settingsでgoの設定をします。
開発環境のDockerにはGoの開発に関するライブラリがもっとたくさんあるのですが、エディターを軽量に動作させるために最小限の設定にします。
続いて
docker-compose.extend.yml
の設定をします。
リモート開発用に追加したい設定は、既存のdocker-compose.ymlには手を加えないでこちらに記述します。
version: "3.7"
services:
web:
environment:
- HOME=/go/src
volumes:
- ~/.gitconfig:/go/src/github.com/java-lang-programming/.gitconfig
- ~/.ssh:/go/src/github.com/java-lang-programming/.ssh
これで.devcontainerの設定は完了です。
4. .vscodeフォルダ作成
.vscodeフォルダを作成します。
mkdir .vscode
settings.jsonを作成します。
touch .vscode/settings.json
settings.jsonに設定を記載します。
{
"go.toolsEnvVars": {"GO111MODULE": "on"},
"go.installDependenciesWhenBuilding": false,
"go.formatTool": "goimports",
"go.useLanguageServer": true,
"go.lintFlags": ["--enable-all", "--new"],
"[go]": {
"editor.snippetSuggestions": "none",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true,
}
},
"go.inferGopath": false
}
これで設定は完了です。
あとはフォルダをVScodeにドラッグして、
Reopne in container
を選択すればVSCodeでdockerコンテナ環境の開発をおこなうことができます。