LoginSignup
4
5

More than 3 years have passed since last update.

Docker + Go の Hello Worldビルド

Posted at

Dockerの中で go をビルドして、Hello World することがゴールです。
手順をシンプルに書いていきます。

まず Docker と Docker-compose を入れておきます。これは省略します。

Dockerディレクトリを作成

以下のようにファイルを作ります。

./docker
./docker/.env
./docker/docker-compose.yml
./docker/go
./docker/go/Dockerfile

./src/
./src/go

Dockerの設定

Docker全体用の設定

今回はコンテナは1つしか作りませんが、
今後の拡張を考えたつくりにはしておきます。
常にクセづけておくことで、迷うことがなくなります。

.env
COMPOSE_PROJECT_NAME=go-docker-starter

goビルド用コンテナ

docker-compose.yml
version: '3'
services:

  go:
    build: ./go
    container_name: '${COMPOSE_PROJECT_NAME}-go'
    tty: true
    volumes:
      - "../src/go:/opt/src"
Dockerfile
FROM golang:1.14.0

Dockerコンテナ作成

cd ./docker
docker-compose build
docker-compose up -d

これで Dockerコンテナが起動します。
docker-compose build せずとも、 up -d だけでもビルド一緒にしてくれているのですが、
それは気を利かせてくれているだけなので、動きを理解するためにも build してみましょう。

go の初期ソースコード作成

./src/sample.go
package main

import "fmt"

func main() {
    fmt.Printf("Hello World\n")
}

sample のビルド

デバッグ用ビルド & 実行

変更する度に行うビルドです。

docker exec go-docker-starter-go bash -c "cd /opt/src/ && GOOS=linux GOARCH=amd64 go run sample.go"

ビルド

docker exec go-docker-starter-go bash -c "cd /opt/src/ && GOOS=linux GOARCH=amd64 go run sample.go"

sample.go と同じディレクトリに出力されます。
-oオプションで出力先を指定することもできます。

github

4
5
1

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
4
5