はじめに
こちらの記事の写経をしているとdocker-compose周りがWSL上にあるのでつまづきました。解決法をメモ書きしておきます。
docker-composeを使えるようにする
docker-compose
をapt-get
でインストールしましたが、デーモンが起動していなかったため、docker-compose
が実行できませんでした。以下のコマンドを入力してデーモンを立ち上げます。
sudo cgroupfs-mount
sudo usermod -aG docker $USER
sudo service docker start
docker-compose.ymlを用意する
内容はこちらの記事のものと同じです。今後の作業で利用するユーザー名やパスワードなどは同じ階層にある.envファイルに書かれているものが使われます。
DBの確認
ブラウザからlocalhost:80
に接続し、PostgreSQLにログインします。このとき、.wslconfigで以下のように指定してあります。
[wsl2]
memory=8GB
swap=0
localhostForwarding=True
特に重要なのが3行目のlocalhostForwarding=True
です。これによりポートフォワーディングを行っています。この設定により、ホストOSのブラウザからlocalhost:80
でPosgreSQLにアクセスすることができるようになります。
ここで躓いたのがサーバーを作成する際の「ホスト名/アドレス」に入力する内容です。ここにはPostsqlサーバーへのIPアドレスを入力する必要があります。このIPアドレスはdocker inspect [PostgreSQLのコンテナID]
のNetworkSettings->Networks->Gatewayに書かれているものを使えば接続することができます。[PostgreSQLのコンテナID]
はdocker ps
で取得できます。
おわり
ほとんどこちらの記事を写経したときの日記になってしまいましたが、同じように困っている方の参考になれば幸いです。
参考文献
docker-composeを使うきっかけになった記事: PythonのフレームワークFlaskを使用してWebアプリ作成の物語(3)Docker登場 DBの準備
dockerのデーモンの起動方法: WSLのdocker daemonを自動起動させる