Go実践入門のchitchatの練習用リポジトリ。
- docker-compose
- go: 13.7 buster
- postgres: latest
- データ永続化はしていない
- 設定は特にしていない
下記の手順をすれば、特にGoやDBの設定をしなくても起動することを確認している。
make
コマンドが使えない場合は、Makefile
内のコマンドを参照。
- イメージビルド&コンテナ作成
% make create
- Goモジュールのビルド
% make build
- コンテナ内に入る
% make exec
- バイナリファイル実行
(コンテナ内)$ build/chitchat
- localhost:8080 にアクセス
% make destroy
/chitchat/data/data.go
のDBへの接続(sql.Open
)をdocker-compose用に変更
connectTemplate := "host=%s port=%s user=%s password=%s dbname=%s sslmode=disable"
// DBHost is db-container name
DBHost := os.Getenv("DB_HOST")
// DBUser is name
DBUser := os.Getenv("DB_USER")
// DBPass is password
DBPass := os.Getenv("DB_PASS")
// DBPort is connection type
DBPort := os.Getenv("DB_PORT")
// DBName is DB name
DBName := os.Getenv("DB_NAME")
connect := fmt.Sprintf(connectTemplate, DBHost, DBPort, DBUser, DBPass, DBName)
Db, err = sql.Open("postgres", connect)
初回DBコンテナ作成時に、テーブルがドロップできずエラーとなるため、以下を実施した。
/chitchat/data/setup.sql
を/docker/postgres/init/*
にコピーdrop
文を以下に変更
- drop table posts;
- drop table threads;
- drop table sessions;
- drop table users;
+ drop table if exists posts;
+ drop table if exists threads;
+ drop table if exists sessions;
+ drop table if exists users;