よしかわーるど

プログラミングで世界を変える

2019年3月29日にやったこと

前の記事

2019 年 2 月 25 日にやったこと

やったこと

Makefileの修正を行った.

docker-composeのMySQLコンテナでエラーが出るので, 修正を行った.

depからgo moduleに変更した.

内容

make だけでコンテナが起動し, データベースの作成, テーブルの作成を終わらせるようにしました.

GOCMD=go
GORUN=$(GOCMD) run
GOBUILD=$(GOCMD) build
GOCLEAN=$(GOCMD) clean
GOTEST=$(GOCMD) test
GOGET=$(GOCMD) get
GODOC=$(GOCMD)doc
COMPOSE=docker-compose
EXEC=$(COMPOSE) exec
BUILD=$(COMPOSE) build
UP=$(COMPOSE) up -d
LOGS=$(COMPOSE) logs
STOP=$(COMPOSE) stop
RM=$(COMPOSE) rm
DOWN=$(COMPOSE) down
API=$(EXEC) api
DB=$(EXEC) db
REACT=$(EXEC) react
DBNAME:=fieldsensing
TESTDBNAME:=test_fieldsensing
MYSQL:=mysql --defaults-extra-file=/home/access.cnf

all: docker/up migrate/init migrate/up ## docker up & migrate

front: docker/up npm/install ## docker up & npm install

migrate/init: ## migrate init
	$(DB) /home/wait.sh
	$(DB) $(MYSQL) -e "create database if not exists \`$(DBNAME)\`"

migrate/test-init: ## migrate test database init
	$(DB) /home/wait.sh
	$(DB) $(MYSQL) -e "create database if not exists \`$(TESTDBNAME)\`"

migrate/up: ## migrate up
	$(API) goose up

migrate/down: ## migrate down
	$(API) goose down

docker/build: ## docker build
	$(BUILD)

docker/up: ## docker up
	$(UP)

docker/logs: ## docker logs
	$(LOGS)

docker/stop: ## docker stop
	$(STOP)

docker/clean: ## docker clean
	$(RM)

docker/down: ## docker down
	$(DOWN)

api/bash: ## api container bash
	$(API) bash

react/bash: ## react container bash
	$(REACT) bash

db/bash: ## db(MySQL) container bash
	$(DB) bash

npm/install: ## npm install
	$(REACT) npm install

npm/watch: ## npm watch
	$(REACT) npm run watch

npm/build: ## npm build
	$(REACT) npm run build

run: ## go run main.go
	$(API) $(GORUN) main.go

test: ## go test
	$(API) $(GOTEST) -v ./...

doc: ## godoc http:6060
	$(GODOC) -http=:6060

help: ## Display this help screen
	@grep -E '^[a-zA-Z/_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'

DBコンテナが完璧に起動しないとエラーが出るので, 以下のShell Scriptを実行しています.

wait.sh
#!/bin/sh
ESC="\e["
ESCEND=m
COLOR_OFF=${ESC}${ESCEND}
maxcounter=45

counter=1
echo "Waiting for MySQL"
while ! mysql --protocol TCP -uroot -p"$MYSQL_ROOT_PASSWORD" -e "show databases;" > /dev/null 2>&1; do
    sleep 1
    printf "."
    counter=`expr $counter + 1`
    if [ $counter -gt $maxcounter ]; then
        >&2 echo "We have been waiting for MySQL too long already; failing."
        exit 1
    fi;
done
echo "${ESC}32${ESCEND}"
echo "\nMySQL ready!!"
echo "${COLOR_OFF}"

go modules でライブラリの管理を始めました.

コンテナとdepの相性が悪かったので安心して導入できました.

export GO111MODULE=on

次の記事

2019年4月1日にやったこと

関連の記事

2019 年にやりたいことを書いていく

2019 年 1 月 27 日にやったこと

2019 年 1 月 28 日にやったこと