mutao.net

いわゆる雑記。

Flask+MySQLなローカル環境をDockerで構築する

Flask + MySQL なアプリケーションのローカル環境を作成する機会があったので残す。

作ったもの github.com

欲しかったもの

  • ローカル環境に依存しないようにしたい。
  • docker-compose up -d だけでローカル環境を整備したい。
  • MySQL用のコンテナも作ってテストデータも入れ込みたい。

docker-compose.ymlの中身はこんな感じ

github.com

つまった所

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を構築しました。

docs.docker.com

MySQLコンテナへのアクセスはIPを明示的に指定して接続したりもできますが、コンテナ名でもできるので今回はコンテナ名を指定してアクセスするようにしてます。

github.com

基本的なことだけど使ってない知識は錆びるのでまた忘れたときようにメモ。