普段フロントエンドをメインとしているので、バックエンドの環境構築に疎い。 今まではFirebase
を使用することが多く、前回はじめてNestJS
で本格的にバックエンドの構築をした。 とは言えNestJS
はJavascript
である。
Windows11に入れたMySQLとNest.Jsを接続し、テーブルを作成する
難しかったけど、新しいことに挑戦した感じがしなかった。 しかもその時、とにかく早く実装したかったので、MySQL
をWindows
にインストールしたうえでテストしていた。
実際の案件ではそんなことありえないので、しっかりDocker
で環境を構築し、言語はGo Lang
を採用することにした。
まずはDockerでMySQLを構築する
docker-compose.yaml を作成する
version: '3'
services:
mysql:
image: mysql:latest
container_name: my-mysql-container
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: your_database_name
MYSQL_USER: your_username
MYSQL_PASSWORD: your_password
ports:
, "3306:3306"
volumes:
- ./data:/var/lib/mysql
で、docker-compose up -d
を実行する。
error during connect: this error may indicate that the docker daemon is not running: Get "http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.24/containers/json?all=1&filters=%7B%22label%22%3A%7B%22com.docker.compose.project%3Dproject-backend%22%3Atrue%7D%7D": open //./pipe/docker_engine: The system cannot find the file specified.
というエラーが出た。
よく分からないけど、Docker
が起動していないことが原因のようなので、Start-Service docker
コマンドを入力しろとGPT
に教えてもらったが、
'Start-Service' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
というエラーが出た。
Dockerを立ち上げる
そういえばDocker Desktop
なるものを過去に使ったことがあるのを思い出したので、
Docker Desktop
を立ち上げて再度挑戦してみる。
$ docker-compose up -d
[+] Running 11/11
- mysql Pulled 52.7s
- 8e0176adc18c Pull complete 14.4s
- 2d2c52718f65 Pull complete 14.7s
- d88d03ce139b Pull complete 14.9s
- 4a7d7f11aa1e Pull complete 15.5s
- ce5949193e4c Pull complete 15.7s
- f7f024dfb329 Pull complete 15.8s
- 5fc3c840facc Pull complete 27.9s
- 509068e49488 Pull complete 28.1s
- cbc847bab598 Pull complete 45.2s
- 942bef62a146 Pull complete 45.6s
[+] Running 2/2
- Network project-backend_default Created 0.4s
- Container my-mysql-container Started 8.7s
いけた、っぽい。
HeidiSQL
で接続してみる。
- ネットワークの種類: MySQL(必要に応じてSSHトンネリング)
- ホスト名/IP: 127.0.0.1(これはローカルマシンのIPアドレスです)
- ユーザー: Docker Composeファイルで指定したMySQLユーザー(この場合、your_username)
- パスワード: Docker Composeファイルで指定したMySQLパスワード(この場合、your_password)
- ポート: 3306(これはデフォルトのMySQLポート)
- データベース: Docker Composeファイルで指定したMySQLデータベース(この場合、your_database_name)
上記手順で接続することができた。