あまりにもWeb系世界が不得手だったので、コッソリとnodejsを勉強していた時がありました。
この本↓
言語仕様の説明は薄めで、実際にアプリを作りながら勉強していくタイプの本です。
動くものができあがるので結構楽しい良本。
が、色々勉強にはなったのですが、nodejsはあんまり肌にあってない感じある。
でもせっかくなので記録は残しておく。
というような自分メモ記事です。
開発環境について
VSCodeでガリガリ書くのはいいとして、nodejs自体はPC本体に入れたくない(バージョン管理から解放されたい)。
学習で使うmysqlもPC本体に入れたくない(DBは仕事で苦労した記憶が多いので本体に入れたくない)。
というわけで、これまた不得手であったdockerに手を出したのです。
そしてできた基本形がこちら。
docker-compose にnodeとmysqlを入れています。
ソースはnodeフォルダの中。
で、使う時になったらコンテナにdocker execしてnpm start OR Sequal Proで接続。
docker-compose
当時、あちらこちらを参考にして書いた記憶。
version: '3'
services:
# DBサーバ
db:
container_name: nodeDb
build: .
image: mysql:5.7
ports:
- "3306:3306"
volumes:
- ./db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: test
MYSQL_PASSWORD: test
# Appサーバ
node:
container_name: nodeApp
build: .
image: node
ports:
- "80:3000"
volumes:
- ./node:/usr/app
command: "/bin/bash"
tty: true
アプリケーションサーバの方はポートのバインドしつつ、ソースコードを共有するためにvolumesでフォルダをバインド。
先に書いたように、実際に使う時はこのサーバに潜り込んでディレクトリを移動してからnpm startする感じです。
DBサーバは(当然のことながら)データを保存しておきたいので、volumesでフォルダをバインドしています。
また、やっていたらmysqlの最新版ではうまく動かなかったので5.7を利用した記憶があります。
DBコンテナに直接入ることはあまりなく、実際にはSequal Proで接続していました。
初めのうちはなんかうまくいかず苦戦した記憶。
問題は
他にもなにか作業していた気がするのですが、いかんせん大分前のことなので忘れました(汗)。
この通りにやっても動かなかった!
となっても責めないでください。