概要
学習として、DockerでGoの最小構成の環境を構築してみた
ターゲット
以下の人を対象にしてます
- 絶対にローカル汚したくない
- DockerComposeとかはいらん
- フレームワークは使わない
- CLIで動けばそれでいい
実装方法
ディレクトリ構成
- go
- Dockerfile
- main.go
Dockerfile
FROM golang:alpine
RUN apk update && \
apk upgrade && \
apk add bash
WORKDIR /go/src
COPY ./main.go /go/src
CMD ["/bin/bash"]
レイヤー説明
第1レイヤー
FROM golang:alpine
このレイヤーでは、Go言語を使用するためのalpineというLinuxディストリビューションを使用することを指定しています。
※Alpine Linuxは軽量なLinuxディストリビューションの1つ
第2レイヤー
RUN apk update && \
apk upgrade && \
apk add bash
このレイヤーでは、apkコマンドを使用してシステムを更新し、bashとmakeパッケージをインストールしています。
※APK:Alpine Linuxのパッケージ管理システム
第3レイヤー
WORKDIR /go/src
このレイヤーでは、ワークディレクトリを/go/srcに設定しています。
第4レイヤー
COPY ./main.go /go/src
このレイヤーでは、main.goファイルを/go/srcにコピーしています。
第5レイヤー
CMD ["/bin/bash"]
このレイヤーでは、/bin/bashを実行するよう指定しています。
main.go
main.go
package main
import "fmt"
func main() {
fmt.Printf("Hello World\n")
}
コンテナ作成
イメージ作成
docker build -t golang:alpine .
コンテナ作成
docker container run -it --name goapp -v ${PWD}:/go/src golang:alpine
動作確認
5825ed41817f:/go/src# go run main.go
Hello World
再度コンテナ内に入る方法
docker start goapp
docker exec -it goapp bash
あとがき
Dockerって便利だね...♠︎