はじめに
Dockerで開発環境を作るアウトプットとして簡単にまとめてみます
goの始め方もまとめていますが、公式ドキュメントを参考にしてください
ファイル構成
.envはdbの環境変数、my.cnfはdbの設定項目に関するファイルになります
やりかた
以下のファイルを作成して、上画像のファイル構成にします
FROM golang:1.18.0
RUN apt-get update && apt-get install -y build-essential make
# vscodeの拡張機能のためにインストール
RUN go install golang.org/x/tools/gopls@latest
RUN go install github.com/ramya-rao-a/go-outline@latest
RUN go install github.com/cosmtrek/air@latest
RUN wget -O ~/vsls-reqs https://aka.ms/vsls-linux-prereq-script && chmod +x ~/vsls-reqs && ~/vsls-reqs
WORKDIR /go/src
docker-compose.yml
version: "3"
services:
db:
image: mysql:8.0
environment:
MYSQL_ROOT_USER: ${ROOTUSER}
MYSQL_ROOT_PASSWORD: ${ROOTPASS}
MYSQL_DATABASE: ${DATABASE}
MYSQL_USER: ${USERNAME}
MYSQL_PASSWORD: ${USERPASS}
TZ: "Asia/Tokyo"
volumes:
- ./my.cnf:/etc/mysql/conf.d/my.cnf
env_file:
- .env
container_name: sample_db
ports:
- 3306:3306
go:
build: ./
volumes:
- ./go/src:/go/src
container_name: sample_go
tty: true
ports:
- "8000:8000"
depends_on:
- db
.env
ROOTUSER=root
ROOTPASS=password
DATABASE=db
USERNAME=docker
USERPASS=docker
my.cnf
[mysqld]
character-set-server = utf8
[client]
default-character-set=utf8
Dockerイメージの作成とコンテナの起動を行います
$ docker-compose build
$ docker-compose up
Dockerfileでgo/srcをワーキングディレクトリにしているのでsrcファイルを含むgoフォルダが作成されます
まずdbのコンテナに入り、db接続を確認します
$ docker exec -it sample_db sh
// passwordはpassword(.envのROOTPASS)
$ mysql -u root -p
次にgoのコンテナに入ります
$ docker exec -it sample_go sh
go.modファイルを作成するために以下を実行します
// sample_goというモジュール名で作成
# go mod init sample_go
go/srcにmain.goファイルを以下の内容で作成します
main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
以下を実行し、コンソール上にHello, World!が表示されたらOK
# go run main.go
おわりに
開発環境をつくる際に同じことを調べたりすることがあったので、まとめました。
今後誰かに教える際にも使えるので、その際はこの記事が役立てば良いなと思います。