PyCharmでインタプリタ設定ができない原因が、docker-composeのバージョンのせいだった件

はじめに

今回、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、これは怖すぎる。

みなさんも、こんなことにならないよう、バージョン管理にはお気をつけ下さい。苦笑

最後まで読んで頂いて、ありがとうございました!

PON

PON

30代で、完全未経験から独学でWeb系エンジニアになった人。 前職では、超絶ブラック企業にはまり込んでしまい、年間1200時間の残業をしていたが、娘が生まれたことで我に返って転職を決意。 現在は、大阪にあるベンチャー企業の自社開発プロジェクトで、リードエンジニアとして奮闘中。 主戦場はバックエンドで、Pythonでのデータ分析が武器。 とは言いつつ、SPAのフロントエンドを実装したり、インフラ設計したり、スクラム開発でプロジェクト運営したりするなんでも屋。 いつも、ググってきては誰かが書いてくれた記事を見て開発していたが、もらってばかりでなく世の中に返すこともしたいと思い、技術ブログをはじめる。 妻と1歳になる娘の3人暮らし。 最近は一日一食。 何かご用件がある方は、TwitterのDMからどうぞ。