PycharmでDockerのオプションを設定する方法

Pycharm-docker-option.png

こんばんはエンジニアの眠れない夜です。

PycharmでPythonを走らせるときにインタープリターのDockerオプションってどうやって設定するんだろう?

と思ったことはありませんか?

Pycharmの Run Configuration を見てもどこに設定すればいいんだ??って私はなっていました。

Pycharmの公式ドキュメントを見てもいまいち欲しい情報が見つからないし…  そして、ググってみてもPycharmの設定方法について書いているブログってあんまり見つからないし…

ということで、今日はそんなPycharmでのDockerのオプション設定の方法をお伝えします。

※ 間違っているところなどありましたらご指摘くださいm(_ _)m

Dockerオプションの設定方法

まずはPycharmの画面上にあるメニューからEdit Configurations…を開きます。

Pycharm設定

設定を変更したいPythonファイルを画面左のメニューから選択します。
続いて画面右下の方にあるDocker container settings と言うところにあるフォルダーのアイコンをクリックします。
ここからDockerのオプション設定ができます。

Pycharm_Docker_option

この画面からDocker起動時のポートの設定やボリュームの共有設定ができます。 ボリュームの設定は初めからされていることに気が付きました。だから プログラムに変更加えでPycharmで実行すると、ビルドし直さなくても変更内容が反映されているのですね。

ポートの設定もここからできるのを知らなかったので、今までポートを設定したいときはターミナルからDocker runを実行していました💦

pycharm-docker-settings.png

そして、1番下の Run options はポートやボリューム以外の設定ができます。 ここにネットワークの設定を追加することで既にホストと共有しているデータベースに接続ができます。

例えば、私の環境では my_network というネットワークにデータベースが接続されているので、上記の設定のように –net=my_network を追加すると、コンテナからデータベースに接続できるようになります。

コンテナ名を指定するときは一番はじめ(–entrypoint= より前)に追加します。

例)--name container_name --entrypoint= --rm --net=my_network

--rm の後ろに追加したときはうまくいきませんでした。

Docker をインタープリターとして使うようになって思ったこと

今まではこのDockerをインタープリターとして設定する方法を試しておらず、こんな感じでdocker-composeを使って開発をしていました。

3ヶ月ほど前まではこれでも問題なかったのですが、最近Dockerのバグ?でPycharmからDocker Composeの停止(再起動)ができないと言う問題が発生しています。

そのため、プログラムに変更加えて Dockerの再起動が必要になった時は、うまく停止せずにターミナルで docker-compose down を叩かなければならず、非常にめんどくさい…という問題があります。(■ 停止ボタンを3回クリックすると止まります。)インタープリターに docker-compose を使わなければこの問題は発生しないので快適です。

また、プロジェクトにもよりますが、Docker Composeより、Docker単体で動かす方が起動までの時間が短くなる傾向にあります。(プロジェクトや環境によっては、docker-composeよりも遅いことがあります)

全てのプログラムに適応する方法

実行ファイル1つ1つに設定するのは面倒なので、画面左下の Edit configuration templates… からDockerオプションの設定を行います。そうすることで、プロジェクト内で新たに実行されるPythonプログラムは自動でDockerオプションが設定された状態で実行できます。

docker setting template

既に、作成されているPythonプログラムの実行設定を変更するのが面倒な時は一旦全て削除してしまえば、次回実行時に自動で設定されるので1つ1つ設定を変えに行く必要はありません。

まとめ

  • Pycharm のインタープリターでDockerオプションを設定する時はRun Configurationの下の方にあるDocker optionsを触る。
  • ターミナルで実行する時と同じようにDockerコマンドを実行できる。
  • DockerをインタープリターにすることでDocker Composeのバグを回避できる
  • Dockerを直接実行できるのでプログラム開始までの待ち時間が短くなる。
  • テンプレートの設定を変更すれば同じプロジェクト内でDockerオプションの設定はしなくて良くなる。
  • Djangoのテンプレートファイルでデバッグができない。

Pycharm でDockerの設定ができると小さなプロジェクトではいいことがたくさんあるので、用途に合わせてぜひお試しください!

あなたのプログラミング環境が少しでも快適になりますように(^^)v

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください