golangの環境構築方法をメモに残します。
Goコンテナ作成
goenvを使ってバージョンを指定します。
バージョンは1.16.4です。
goenv install 1.16.4
goenv local 1.16.4
DBコンテナ作成
golangのコンテナを作成します。
またdocker-compose up時にmain.goが実行されるようにします。
version: '3'
services:
app:
image: golang:latest
volumes:
- ./app:/app
working_dir: /app
ports:
- "8081:8080"
command: go run main.go
db container
次にDBのコンテナを作成します。
DBにはmysqlを使いました。
db:
image: mysql:latest
container_name: mysql
environment:
MYSQL_ROOT_PASSWORD: MYSQL_ROOT_PASSWORD
MYSQL_DATABASE: MYSQL_DATABASE
MYSQL_USER: MYSQL_USER
MYSQL_PASSWORD: MYSQL_PASSWORD
ports:
- "3306:3306"
DB接続
golangからmysqlへ接続できるようにします。
app/main.go
package main
import (
"database/sql"
"fmt"
"log"
_ "github.com/go-sql-driver/mysql"
)
func main() {
dataSourceName := "MYSQL_USSER:MYSQL_PASSWORD@tcp(mysql:3306)/MYSQL_DATABASE"
db, err := sql.Open("mysql", dataSourceName)
if err != nil {
log.Fatal(err)
}
fmt.Println("connected")
defer db.Close()
}