はじめに
初めまして!
エンジニアになって数年、今まで本を読むだけでしたが、もっとプライベートで楽しみながら成長したい!自分が学んだ足跡を残していきたい!と思い記事をかきました!
最終的には自在に開発できるようになりたいと思っています。
いろいろな記事を参考にさせてもらっています。
その中でもこれってどういう意味?とかつまづいたところを念入りに書いていこうかと思います。
今回の目的
友人と進めているアプリ開発でGINを使おうって話が上がりました!折角だからDockerで立ち上げたろう、と思ったのでイチからどう進めていったか書いていきます!
作成した環境
使用したものや事前準備
・Macbook Pro
・GIN(GO)
・Air
・Docker
主に参考にさせていただいた記事
検証:GOプロジェクト作成
まず、コンテナを起動して、Bashでシェルセッションを開始します。
docker run -it --rm golang:latest /bin/bash
プロジェクトを作成するためにホームディレクトリへ移動します。
cd
ディレクトリを作成し移動します。
mkdir hello
cd hello
依存関係を管理してくれるgo.modファイルを作成します。
作成したいディレクトリ配下でinitを実行します。(検証なのでモジュールパスはexampleです。)
go mod init example/hello
go.modファイルの中を確認するとモジュールパスも記載されていることがわかります。
実行用にhello.goファイルを作成します。
vimが入っていないと思うのでまずはそこから
apt update
apt install -y vim
vimを実行し下記のソースを貼り付けます。
vim hello.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
実行してみましょう。
go run .
下記のように表示されていればOKです。
外部パッケージのインポートも試してみます。
hello.goを下記のソースで上書きしましょう。
package main
import "fmt"
import "rsc.io/quote"
func main() {
fmt.Println(quote.Go())
}
依存関係を更新
go mod tidy
ちゃんと依存関係に含まれていることと実行できることを確認できました。
GOプロジェクトの作成は理解できたので、exitで抜けてコンテナは削除します。
検証:GINプロジェクト作成
まっさらな状態になったところで次はGINプロジェクトの作成です。
下記コマンドを実行してください。
docker run -it --rm -p 8080:8080 golang:latest /bin/bash
プロジェクトファイルを作成します。
mkdir -p $GOPATH/src/github.com/myusername/project && cd "$_"
サンプルの実行ファイルを取得しましょう。
curl https://raw.githubusercontent.com/gin-gonic/examples/master/basic/main.go > main.go
go.modを生成します。
go mod init github.com/myusername/project
依存関係を更新します。
go mod tidy
実行して、アクセスしてみましょう。
http://localhost:8080/
go run main.go
接続を確認できました。(ソース実行は後半でやります)
本題:compose.ymlを作成して環境構築
今までの過程を通して、compose.ymlに実行内容を落とし込んでいきます。
単純に立ち上げるとホットリロードではないため、毎回コンテナをリスタートしなければいけなくなります。
面倒なのでAirも入れます。
version: '3'
services:
golang:
#プロジェクトを新規作成したい時はコメントアウトのコマンドを実行
#docker compose run golang \
#bash -c "curl https://raw.githubusercontent.com/gin-gonic/examples/master/basic/main.go > main.go \
#&& go mod init github.com/takizawa0548/project \
#&& go mod tidy"
image: golang:latest
ports:
- 8080:8080
volumes:
- ./app:/go/src/github.com/takizawa0548/project
working_dir: /go/src/github.com/takizawa0548/project
command: bash -c "go install github.com/cosmtrek/air@latest && go mod tidy && air"
プロジェクト作成のコマンドです。(長いので正直あまり良くないと思いますがいい方法が思いつきませんでした。)
compose.ymlのあるフォルダで実行します。
docker compose run golang \
bash -c "curl https://raw.githubusercontent.com/gin-gonic/examples/master/basic/main.go > main.go \
&& go mod init github.com/takizawa0548/project \
&& go mod tidy"
コンテナを立ち上げます。
docker compose up
値が返ってくるかも含めて確認します。
http://localhost:8080/ping
ソースの実行も確認ができました。
値も変えてみましょう。
最後に
これでいいのかは、もっと開発しないとわからないですがとりあえずGINプロジェクトを作成できました!
次はつなぎ込みとかできたらなと思います・・・!
次のお話
編集中・・・