0
0

Windowsに入れたVSCodeでコーディングして、DockerでGoを動かす方法

Posted at

はじめに

以下の教材に取り組む際、Windowsでcurlコマンドを実行しようとするとオプションを変える必要があったりとストレスを感じ、Dockerで開発環境を作成しました。その際の設定を簡単に記録しておきます。

環境

  • Windows10
  • Docker Desktop:26.1.1

ディレクトリ構成

project
├ src
│ ├ Dockerfile
│ ├ go.mod
│ └ main.go
└ compose.yaml

各ファイル

Dockerfile

最低限の構成です。将来的にデータベースを入れるのでイメージはGoではなくUbuntuにしています。

主に使いたいのはcurl, gitで、確認用にvim, tree, lsofを入れています。

Dockerfile
FROM ubuntu:22.04

RUN apt update && \
	apt install -y golang-go

RUN apt install -y curl git vim tree lsof

compose.yaml

WindowsのVSCodeで開発をし、それを即コンテナに反映させるためバインドマウントしています。

compose.yaml
services:
  app:
    container_name: my-go-api
    build:
      dockerfile: src/Dockerfile
      context: .
    tty: true
    volumes:
      - type: bind
        source: ./src
        target: /src
    ports:
      - '18001:8080'

ファイル名は「docker-compose.yml」ではなく「compose.yaml」が推奨されているようです。
また、compose.yamlにバージョンを書く必要もないそうです。

main.go

動作確認用に簡単なmain.goファイルを作っておきます。

package main

import "fmt"

func main() {
	fmt.Println("Hello, world!")
}

動作確認

起動

docker compose up --detach

Dockerfileを修正した場合は、イメージを作り直す必要があるので$ docker-compose up --build --detachしましょう

起動確認

docker compose ls
NAME                STATUS              CONFIG FILES
myapi               running(1)          {前略}\project\compose.yaml

main.go実行

まずコンテナに入ります。

docker container exec `
--interactive `
--tty `
my-go-api `
bash

Shellの場合はバックスラッシュ\で改行してください

一応Goが入っているか確認します。

# go version
go version go1.18.1 linux/amd64

main.goを実行します。

# cd src
# go run main.go
Hello, world!

おわりに

このあと教材のサンプルコードに従ってmain.goを作成し、curlコマンドを実行したところ上手くいきました。

参考

0
0
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
0
0