golangの勉強のためにDockerでサクッと開発環境作ってみた。
フォルダ構成
golang_docker_api
-Dockerfile
-main.go
それぞれのファイルの内容は以下参照
Golang+Dockerで環境構築
【Dockerfile】
ローカルのmain.goをコンテナイメージにコピーしてビルド→実行をするDockerfile
Dockerfile
FROM golang:alpine
# フォルダ作成
RUN mkdir /app/
# 作成したフォルダ内にmain.goを配置
COPY . /app/
# 作業場所を/appに設定(main.goがある場所)
WORKDIR /app/
# main.goをbuild
RUN go build -o main .
CMD ["/app/main"]
【main.go】
localhostにアクセスしたときに「golang api access」を出力するmain.go
main.go
package main
import (
"fmt"
"net/http"
)
func index(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "golang api access")
}
func main() {
http.HandleFunc("/", index)
http.ListenAndServe(":80", nil)
}
ファイルの作成が終わったら、まずはDockerfileをビルドしてイメージを作成。
cdでDockerfileのあるフォルダまで移動してから以下のコマンドを実行する。
zsh
$docker build ./ -t go_docker_api
Sending build context to Docker daemon 3.072kB
Step 1/6 : FROM golang:alpine
.....
Successfully built 8fc142c5cd0d
Successfully tagged go_docker_api:latest
最後に「Successfully」が出ていれば成功。
次に作成したイメージを実行する
zsh
$docker run --name go_docker -d -p 80:80 go_docker_api
269cf535b7d0030e6058056559b9eb8334e966131eac9b077d21072615c662fa
なんか文字列が出てくる。
以下のコマンドで起動を起動確認する。
zsh
$docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
269cf535b7d0 go_docker_api "/app/main" 13 minutes ago Up 13 minutes 0.0.0.0:80->80/tcp go_docker
これが出れば実行成功。
Webブラウザを開いてlocalhostにアクセスする。
golangが動いていることを確認できました!