VSCodeの拡張機能Dev Containersで任意のDockerfileを使う【Goイメージ】
今回はDockerfile
を用いて、Dev Containers
上でDocker
を動かしたいと思います。
設定手順からアプリ起動までを実施します。
Dev Containers
のメリットとしてチーム開発における開発環境の標準化や再現性を確保できることが大きな利点と思っています。
Dev Containersの設定ファイルはGitなどのリポジトリに含めることができるため、新しい開発者がプロジェクトに参加する際に、環境のセットアップが簡単に行えます。
今回の内容はこちらのリポジトリで公開していますのでcloneし、試してみてください。
新しい開発者として体験できます。
Dev Containersについては前回の記事を参考にしてください。
画像引用:https://code.visualstudio.com/docs/devcontainers/containers
1. 環境
Windows10(22H2)
WSL2(Ubuntu 20.04)
Docker Desktop 4.14.0
VSCode(1.80.1)
2. 最終的に設定するディレクトリ
DevContainerUsingImages
├─ Dockerfile
├─ go.mod
├─ main.go
└─ .devcontainer
└─ devcontainer.json
何はともあれ作業ディレクトリを作成します。
mkdir DevContainerUsingImages
cd DevContainerUsingImages
3. devcontainer.json作成
.devcontainer
ディレクトリとdevcontainer.json
を作成します。
mkdir .devcontainer
cd .devcontainer
.devcontainer
ディレクトリにdevcontainer.json
を作成し、中身を以下のように記述します。
{
"name": "Go DevContainer", // お好みの名前
"build": {
"dockerfile": "../Dockerfile" // 相対パス表記
}
}
4. Dockerfile作成
Dev Containersで利用するDockerfile
を定義します。
Dockerfile
はdevcontainer.json
内に記述したパスに配備してください。
今回ですとdevcontainer.json
の一つ上の階層です。
cd ..
touch Dockerfile
# Goのイメージを指定します
FROM golang:1.19 AS build
# 作業ディレクトリを設定します
WORKDIR /app
# Goの依存関係をコピーします
COPY go.mod ./
RUN go mod download
# ソースコードをコピーします
COPY . .
開発環境なためマルチステージビルドは使用しません。
5. プログラム作成
5.1 プロジェクト作成
まずはGoのプロジェクトを作成します。
go mod init app
go.mod
ファイルが作成されました。
module app
go 1.20
5.2 メインプログラム作成
main.go
を作成します。
簡易的なサーバプログラムです。
"Hello, World"を返却するものです。
package main
import (
"fmt"
"log"
"net/http"
)
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "Hello, World")
}
func main() {
http.HandleFunc("/", handler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
以上で下記構成になっていると思います。
DevContainerUsingImages
├─ Dockerfile
├─ go.mod
├─ main.go
└─ .devcontainer
└─ devcontainer.json
6. コンテナ実行確認
6.1 Dev Containers起動
実際にコンテナを起動しましょう
VSCodeのコマンドパレットを開きます(ショートカットキー: F1
or Ctrl + Shift + P
)。
コマンドパレットに"reopen"と入力します。
"Dev Containers: Rebuild and Reopen in Container"という項目が表示されます。
これを選択します。
しばらく待つと接続が確認できます。
左下に"><開発コンテナー:Go DevContainer"とあります。
"Go DevContainer"はdevcontainer.json
で指定した"name"になります。
6.2 プログラムRun
メインプログラムを実行します。
go run main.go
プログラムが起動され、右下に通知が表示されます。
"ブラウザで開く"を選択し、ブラウザでアクセスします。
6.3 Hello, World
無事にアプリの起動できました。
ホストPCからDev Containers上で動作するアプリに接続が出来ています。
これにて動作確認完了になります。
このままソースコードを編集し、開発を行うことができます。
7. 最後に
今回はDev ContainersとDockerfileを用いて、設定手順からアプリ起動までを実施しました。
Dev ContainersはDocker Compose
にも対応しています。
そのため、PostgreSQLなどDBを含めた開発環境も構築可能です。
再度にはなりますがDev Containersの設定ファイルはGitなどのリポジトリに含めることができるため、新しい開発者がプロジェクトに参加する際に、環境のセットアップが簡単に行えます。
Dockerが使える環境に在籍している方はぜひ試してみてください。
参考
Discussion