Docker初心者ですが頑張りたいと思います。
よろしくお願いします。

目的

Dockerの勉強がてらGoの勉強をする
Hello Worldを出力するまでやろうと思います。

動作環境

Windows10 Pro
Docker for windows

Goの環境を構築する

ファイル構成は以下のようになってます

-go_lang
 │-docker-compose.yml
 |
 |-app_go
    │-Dockerfile
    |-app

今後DBコンテナ等を増やすかもしれないのでdocker-composeを用いています

version: '3'
services:
  app:
    #app_goの中にあるDockerfileの読み込み
    build: ./app_go
    container_name: "app_go"
    tty: true
    #ホストのディレクトリをコンテナにマウント
    volumes:
      - ./app_go/app:/go/src/app

ローカル側でファイルをいじりたいのでappディレクトリをマウントしています
tty: trueがないとコンテナが終了してしまいます。

FROM golang:1.8

WORKDIR /go/src/app

Dockerfileについては特に言うことはないでしょう

コンテナ作成に必要なファイルは揃ったのでbuildしていきましょう
ターミナルを開きdocker-compose.ymlがあるディレクトリまで移動して以下のコマンドを実行

PS C:\go_lang> docker-compose build
Building app
Step 1/2 : FROM golang:1.8
 ---> 0d283eb41a92
Step 2/2 : WORKDIR /go/src/app
 ---> Running in b2e6eb0d0fc5
Removing intermediate container b2e6eb0d0fc5
 ---> e142e671f39f
Successfully built e142e671f39f
Successfully tagged go_lang_app:latest

golangイメージがローカルにない場合はdockerhubからgolangイメージを取ってくるので2~3分程かかります

ビルドが終わったら実際にイメージが作られているか確認してみましょう。

PS C:\go_lang> docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
go_lang_app                latest              febbabb91a83        About an hour ago   713MB
golang                     1.8                 0d283eb41a92        11 months ago       713MB

go_lang_appとgolangがビルドして作られたイメージです
確認ができたらコンテナを起動していきましょう

PS C:\go_lang> docker-compose up -d
Creating network "go_lang_default" with the default driver
Creating app_go ... done
PS C:\go_lang>

環境構築はできたのでGoのコードを書いていきます。

Hello World

go_lang/app/go_appの中にsample.goを作成します。

package main

import "fmt"

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

作成したらコンテナの中に入りプログラムを実行します
コンテナに入るにはexecコマンドを使います

PS C:\go_lang> docker exec -it app_go bash
root@803babe23e01:/go/src/app# ls
sample.go
root@803babe23e01:/go/src/app#

go/src/appには先ほどローカルで作成されたsample.goがあります。
go runでプログラムを実行します

root@803babe23e01:/go/src/app# go run sample.go
Hello, world

できた!!ヽ(・∀・)ノ

コンテナから抜けて終了します

root@803babe23e01:/go/src/app# exit
exit
PS C:\go_lang> docker-compose down
Stopping app_go ... done
Removing app_go ... done
Removing network go_lang_default
PS C:\go_lang>

以上です
今回はこれで終わります

广告
将在 10 秒后关闭
bannerAds