docker+golang+mysql環境を作成する。
今回はdockerにgolangとmysqlコンテナを作成します。
golangのフレームワークとしてはecho/gorm/sql-migrateを選択します。
ファイル構成は下記になります。
.
├── backend
| └── api
├── containers
| ├── go
| | └── Dockerfile
| └── mysql
| └── my.cnf
└── docker-compose.yml
docker-compose.yml
version: '3'
services:
api:
container_name: api
build: ./containers/go/
ports:
- 10080:8080
links:
- db
tty:
true
volumes:
- ./backend/api:/go/src/api
db:
image: mysql:8.0
volumes:
- db-store:/var/lib/mysql
- ./containers/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
environment:
- MYSQL_DATABASE=go_db
- MYSQL_USER=gouser
- MYSQL_PASSWORD=gopass
- MYSQL_ROOT_PASSWORD=gopass
- TZ=Asia/Tokyo
ports:
- "3306:3306"
volumes:
db-store:
Dockerfile
FROM golang:1.14-alpine
WORKDIR /go/src/api/
RUN apk update \
&& apk add --no-cache git \
&& go get -u github.com/labstack/echo \
&& go get github.com/jinzhu/gorm \
&& go get -u github.com/go-sql-driver/mysql \
&& go get github.com/rubenv/sql-migrate
EXPOSE 8080
my.cnf
[mysqld]
# character set / collation
character_set_server = utf8mb4
collation_server = utf8mb4_0900_ai_ci
# timezone
default-time-zone = SYSTEM
log_timestamps = SYSTEM
# Error Log
log-error = mysql-error.log
# Slow Query Log
slow_query_log = 1
slow_query_log_file = mysql-slow.log
long_query_time = 1.0
log_queries_not_using_indexes = 0
# General Log
general_log = 1
general_log_file = mysql-general.log
[mysql]
default-character-set = utf8mb4
[client]
default-character-set = utf8mb4
上記のファイルを配置した後
docker-compose up -d
で起動します。
backend/api配下に実行するgo言語のプログラムを配置します。
今回はhello_world.goを作成して実行してみます。
package main
import "fmt"
func main() {
fmt.Printf("Hello world\n")
}
上記をbackend/api/hello_world.goとして保存したら
docker-compose exec api go run hello_world.go
上記で実行し、 Hello world がコマンドラインに表示できたら成功です。
まあこのテストですと、mysqlに接続テストまではできてませんが・・・
mysqlの接続テストまでは次に記載します。