0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Goの環境構築

Last updated at Posted at 2022-11-06

前提

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("コンテナ起動してるよ!!")
}

ファイルが準備できたら下記でコンテナを立ち上げましょう。

  1. docker compose build
  2. 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ってなんだろ?と悩んだ時に下記記事が解決してくれました。 ありがとうございます。

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?