<目次>
学習履歴
Go言語のフレームワークの一つである「gin」にて、アプリケーション開発をしてみましょう。
今回は、開発環境を構築します。
前提条件
プロジェクトの準備
まずは、ローカルにプロジェクトを準備します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
mkdir gin-app cd gin-app touch Dockerfile touch docker-compose.yml mkdir api touch api/main.go mkdir db mkdir db/sql touch db/my.conf touch db/sql/001-create-tables.sql touch db/sql/init-database.sh mkdir frontend touch Dockerfile-nodejs |
Dockerの設定
Dockerコンテナ内に開発環境を構築します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# Dockerfile FROM golang:latest ENV SRC_DIR=/go/src/github.com/gouser/money-boy/api ENV GOBIN=/go/bin # WORKDIR $GOBIN WORKDIR $SRC_DIR ADD ./api $SRC_DIR RUN cd /go/src/; # Install dependency module RUN go get github.com/go-sql-driver/mysql \ && go get -u github.com/gin-gonic/gin \ && go get github.com/gorilla/mux \ && go get -u github.com/jinzhu/gorm \ && go get github.com/gin-contrib/cors \ && go get gopkg.in/ini.v1 ENTRYPOINT ["go", "run", "main.go"] |
1 2 3 4 5 6 7 8 |
# Dockerfile-nodejs FROM node:10.13-alpine MAINTAINER kanagawa App Developer Ltd RUN npm uninstall -g create-react-app RUN npm install -g create-react-app RUN npm install axios react-router react-bootstrap bootstrap react-router-dom node-sass redux@4.0.4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# docker-compose.yml version: '3' services: api: build: context: . dockerfile: "./Dockerfile-golang" ports: - "8080:8080" container_name: api depends_on: - mysql volumes: - ./api:/go/src/github.com/gouser/money-boy/api environment: MYSQL_USER: admin MYSQL_PASSWORD: admin MYSQL_DATABASE: money-boys frontend: build: context: . dockerfile: "./Dockerfile-nodejs" volumes: - ./frontend:/frontend command: > sh -c "cd frontend && yarn start" ports: - "3000:3000" container_name: frontend depends_on: - app - api stdin_open: true mysql: image: mysql:5.7.22 environment: MYSQL_ROOT_PASSWORD: admin MYSQL_USER: admin MYSQL_PASSWORD: admin MYSQL_DATABASE: money-boys ports: - "3306:3306" container_name: mysql volumes: - ./mysql/data:/var/lib/mysql - ./mysql/my.cnf:/etc/mysql/conf.d/my.cnf - ./mysql/sql:/docker-entrypoint-initdb.d phpmyadmin: image: phpmyadmin/phpmyadmin environment: - PMA_ARBITRARY=1 - PMA_HOST=mysql - PMA_USER=admin - PMA_PASSWORD=admin links: - mysql ports: - 8888:80 volumes: - /sessions container_name: phpmyadmin |
api設定
ginを使ったプログラムの作成は一旦置いておいて、ダミー用のプログラムを用意します。
1 2 3 4 5 6 7 8 9 |
// main.go package main import "log" func main() { log.Println("Start App...") } |
DB設定
家計管理アプリケーションを作ることにしましょうか。
DBは、MySQLを使用するので、「001-create-tables.sql」に以下の設定を行います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
---- create ---- create table IF not exists `products` ( `id` INT(20) AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL UNIQUE, `detail` VARCHAR(10000) NOT NULL, `price` INT NOT NULL, `img` MEDIUMBLOB NULL, `created_at` Datetime DEFAULT NULL, `updated_at` Datetime DEFAULT NULL, `deleted_at` Datetime DEFAULT NULL, PRIMARY KEY (`id`) ) DEFAULT CHARSET=utf8 COLLATE=utf8_bin; |
続いて、「init-database.sh」に以下の設定を行います。
1 2 3 4 5 6 |
#!/usr/bin/env bash #wait for the MySQL Server to come up #sleep 90s #run the setup script to create the DB and the schema in the DB mysql -u admin -padmin money-boys < "/docker-entrypoint-initdb.d/001-create-tables.sql" |
「my.conf」には、以下の設定を入れておきましょう。
1 2 3 4 5 6 |
[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci [client] default-character-set=utf8mb4 |
ビルド
dockerコンテナをビルドします。
1 2 |
docker-compose build docker-compose up |
コンテナが立ち上がったらブラウザから「localhost:8888」へアクセスしてみましょう。PHPMYADMINのページが表示されるはずです。

OKですね。
Reactプロジェクトの設定
フロントエンド部分はReactで作成する予定のため、以下のコマンドを実行しておきましょう。
1 |
docker-compose run --rm frontend sh -c "npx create-react-app frontend" |
上記は、Reactプロジェクトを作成するためのコマンドで、開発に必要なモジュールを自動でインストールしてくれます。
インストールが完了した後、「localhost:3000」にアクセスしてみましょう。

Talend API Testerの導入
これから作成するAPIをテストするために、Talend API Tester をGoogle Chromeにインストールしておいてください。
次回
次回は、ginを使ったプログラムの実装を行なっていきます。
コメントを残す
コメントを投稿するにはログインしてください。