Docker Composeを使って、手軽にGo言語の開発環境を整える手順をメモしておきます。
目次
はじめに
前提
- Dockerはインストール済みとして話を進めます。
- VSCodeにDev Containersが導入されていること。
手順
以下手順で進めます。
- 必要なファイルを準備
- Docker Composeでイメージのビルドとコンテナの起動
- VSCodeの
Dev Containers
でコンテナに接続 - 開発をはじめる
それでは始めましょう。
1. 必要なファイルの準備
作成するファイルなど
以下のようにプロジェクトディレクトリを作成します。(この例ではgo-dev1
としています)
プロジェクトディレクトリ
go-dev1/ ├── Dockerfile ・・・(1) └── docker-compose.yml ・・・(2)
- プロジェクトディレクトリはローカルの任意の場所で大丈夫です。(例:
C:\docker\go-dev1
など) - ファイルは文字コードを
UTF-8
として作成して下さい。
(1)Dockerfile 作成
Dockerfile
FROM golang:1.17 WORKDIR /app # go.mod と go.sum ファイルを生成するために go mod init を実行 RUN go mod init go-dev1 # 依存関係のパッケージをダウンロードし、go.sum ファイルを生成 RUN go mod download COPY . . # コンテナを起動し続ける ENTRYPOINT ["tail"] CMD ["-f", "/dev/null"]
(2)docker-compose.yml 作成
docker-compose.yml
version: '3.9' services: app: build: . volumes: - .:/app working_dir: /app command: tail -f /dev/null
2. イメージのビルドとコンテナの起動
docker-compose up -d --build
3. コンテナに接続
- VSCodeを立ち上げます。
Remote Explorer
を開き、Dev Containers
を選択します。- リストの中に
go-dev1
があると思うので、Attach to Container
を選択します。 - コンテナが立ち上がってきたら、
/app
を開きます。 - 1. 必要なファイルの準備にて準備したプロジェクトディレクトリがマウントされているため、同じファイルが見えるはずです。
4. 開発開始
(3)main.go 作成
コンテナ内
/app/ ├── Dockerfile ├── docker-compose.yml └── main.go ・・・(3)
main.go
package main import "fmt" func main() { fmt.Println("Hello, World.") }
実行
go run main.go
実行結果
root@8bff32e5a2f4:/app# go run main.go Hello, World.
コンテナの停止
コンテナの起動していた方のターミナルにて、以下コマンドを実行します。
docker-compose down
コンテナの再起動
再度、コンテナを起動させたい場合、2. イメージのビルドとコンテナの起動から実行して下さい。