前提
M1 Macbook
この記事で示す手法は2通りです。
HomeBrewを用いた環境構築
Dockerを用いた環境構築
HomeBrewもしくはDockerの環境構築が済んでいることを前提とします。
参考記事が山のようにあると思うので検索してみたください
Home Brew
brew i go
以上です。
Goenv
の利用やGOPATH
の設定は必要ないです。
Go
は後方互換性が確保されているので、Versionはガンガン上げて良いです。
GOPATH
に関して昔はいろいろやる必要があったみたいですが、現在(go 1.19
)では必要無くなったらしい
シンプルで良いですね。むしろシンプルすぎ。
余談ですが、Goの実行は下記コマンドです
go run main.go
Docker
docker-compose.yml
を使います。
Dockerfile
だけを使う方法もありますが、servise
が1つでもyml
使った方が色々便利ですよね。
構成は下記
backend
- Dockerfile
- main.go
docker-compose.yml
Dockerfile
# ベースイメージをDockerHubを見て決める alpineがお気に入り軽くて良い
FROM golang:1.19.3-alpine
# alpineはapkを使う goはgitが必要なので入れておく
RUN apk updata && apk add git
# 作業ディレクトリを作成 & 設定 (execの実行場所)
WORKDIR /app
# Build時に既存のコードをコピーする
COPY ./backend /app
docker-compose.yml
version: "3"
services:
web:
build:
context: ./backend
dockerfile: ./backend/Dockerfile
container_name: "web"
tty: true
volumes:
- ./backend:/app
main.go
package main
import "fmt"
func main() {
fmt.Println("コンテナ起動してるよ!!")
}
ファイルが準備できたら下記でコンテナを立ち上げましょう。
docker compose build
docker compose up -d
この時点でコンテナが立ち上がったのでmain.go
を実行してみましょう
docker compose exec web go run main.go
APIサーバーを作る時は??
Dockerfileの最後に CMD ["go", "run", "main.go"]
を加えてください。
ymlにポートを指定してください
コンテナ立ち上げ時に-d
オプションをつけないでください
終わりに
最近Goに興味があってちょっと触ってみたんですが、自分は結構気に入りました。
なんと言ってもシンプルですね。 API開発時もFWやライブラリありきで開発する言語がある中Goはそんなこともないですし
勉強していたら総合的な力が上がっていきそう
Dockerに関して
WORDKR
の前に RUN mkdir /app
をしていませんが、なかったら自動で作成してくれるので必要ないです。
context
ってなんだろ?と悩んだ時に下記記事が解決してくれました。 ありがとうございます。