Flask+MySQLなローカル環境をDockerで構築する
Flask + MySQL なアプリケーションのローカル環境を作成する機会があったので残す。
作ったもの github.com
欲しかったもの
- ローカル環境に依存しないようにしたい。
- docker-compose up -d だけでローカル環境を整備したい。
- MySQL用のコンテナも作ってテストデータも入れ込みたい。
docker-compose.ymlの中身はこんな感じ
つまった所
FlaskコンテナとMySQLコンテナ間のアクセスがうまくいかない。
実はこれまでコンテナ間で通信するような環境を作ったことがなくてちょっと躓いた。
container_name: db_container build: ./mysql image: mysql:5.7 restart: always environment: MYSQL_DATABASE: test MYSQL_USER: user MYSQL_PASSWORD: pass ports: - 3309:3306
3309ポートにアクセスすればいけるだろと思ってました。
実際にlocalからの接続からは mysql -h localhost -u test -P 3309 -p
で問題なく見れました。
すっかり忘れていたのが Docker Networking です。
network
keyを使ってDocker Networkを構築しました。
MySQLコンテナへのアクセスはIPを明示的に指定して接続したりもできますが、コンテナ名でもできるので今回はコンテナ名を指定してアクセスするようにしてます。
基本的なことだけど使ってない知識は錆びるのでまた忘れたときようにメモ。