2019年3月29日にやったこと
やったこと
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を実行しています.
#!/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