はじめに
今回、PyCharmでdocker-composeのインタプリタ設定をしようとするも、うまくできなくて、色々と原因を調査しました。
同等のケースに関する記事が見つからなかったので、記事にします。
結果、docker-composeのバージョンのせいだったということが分かったので、共有します。
状況
PyCharmでインタプリタ設定をして、Serviceを選択しようとしたところ添付画像のような表示が。

本来なら、ここにはdockerのサービスが一覧表示されるはずですが、見覚えのない文字が並んでいる。
docker-compose.ymlファイルを書き換えたワケでもないのに、どうして?
こういった状況でした。
先に結論
結論です。
docker-composeのバージョンが、いつの間にかベータ版の2.0.0
になっていました。怖
自分で上げたつもりは無く、誤操作してしまったようです。
怖すぎる。
このバージョンを執筆時点での安定版最新である、1.29.2
にバージョンダウンすると解決しました。
原因
色々試していて知ったのですが、実はこの2.0.0ではサービス一覧を取得するdocker-compose config --service
コマンドが使えないようです。
ターミナルでコマンドを叩いてみると、以下のようなエラーが出ます。
unknown flag: --service
また、よくよく調べてみると、PyCharm側にも以下のようなメッセージが表示されていました。
docker-compose could not complete successfully.
Please see the command's output for information about resolving this problem.
serviceフラグが廃止され、servicesフラグに変更されている
docker-compose config --help
でヘルプを呼び出してみると、以下の表示がされました。
Usage: docker compose convert SERVICES
Converts the compose file to platform's canonical format
Aliases:
convert, config
Options:
--format string Format the output. Values: [yaml | json] (default "yaml")
--hash string Print the service config hash, one per line.
--no-interpolate Don't interpolate environment variables.
--profiles Print the profile names, one per line.
-q, --quiet Only validate the configuration, don't print anything.
--resolve-image-digests Pin image tags to digests.
--services Print the service names, one per line.
--volumes Print the volume names, one per line.
--service
フラグがない代わりに、よく見ると--services
フラグの文字が。
そこでdocker-compose config --services
で実行してみると、サービス一覧が確認できました。
PyCharmは、内部的に–serviceのコマンドを叩いていた?
これは想像ですが、インタプリタでサービスを選択するセレクトボックスにはdocker-compose config --service
コマンドを叩いた結果を出力しているのかもしれません。
これによって、ベータ版2.0.0のdocker-composeにPyCharmが対応しておらず、このような挙動になったのかと考えられます。
さいごに
今回は、PyCharmのインタプリタ設定ができなかった理由が、docker-composeのバージョンによるものだった件について、記事にしました。
ベータ版に対応していないPyCharm、これは流石に仕方ない。
しかし、いつの間にかベータ版にバージョンアップされていたdocker-compose、これは怖すぎる。
みなさんも、こんなことにならないよう、バージョン管理にはお気をつけ下さい。苦笑
最後まで読んで頂いて、ありがとうございました!