r0w0

PythonやDeepLearning関連で学んだこと、調べたことの備忘録

Docker with PyCharm

経緯と結果

Docker Desktop for Windowsのインストールに続き、普段の個人開発環境にDockerを導入してみようということで、PyCharmのインタプリタにDockerで作った環境を用いてみました。

尚、以下のような注意点があり、

結果として、PyCharmProの2020版でやっとこの機能を使うことができました。

ただ、コンテナの起動停止を伴うせいか、ローカルのインタプリタの利用と比べて、プログラムの実行・デバッグの停止が数秒ずつ遅くなってしまいました。またライブラリを追加した際に、キャッシュの削除が必要になるのも面倒そうです。。

Dockerfileの作成

Python環境が構築されるコンテナを定義します。

FROM python:3.8
ADD . /var/pycharm/prj
WORKDIR /var/pycharm/prj
RUN pip install -r ./requirements.txt
  • FROM python:3.8
    • ベースイメージとしてpython:3.8を指定(親イメージを持たないイメージをベースイメージと呼ぶ)
  • ADD . /var/pycharm/prj
    • ADD [src] [dist] であり、ビルドコンテキストからみた[src]を、Dockerイメージ内の[dist]に追加.
  • WORKDIR /var/pycharm/prj

docker-compose.yml

version: '3.8'
services:
  app:
    build:
      context: ../
      dockerfile: ./docker/Dockerfile
    volumes:
      - '../:/var/pycharm/prj'
    container_name: python
    environment:
      - COMPOSE_PROJECT_NAME='sandbox'
    tty: true
    working_dir: '/var/pycharm/prj'
  • services: docker-composeを通して構築されるサービス(コンテナ?)を定義
  • app: サービス名の任意の名前
  • version: docker-composeのバージョン
  • build: ビルドコンテキストとしてDockerに送信するディレクトリの指定(context)とビルドに用いるDockerファイルの指定
  • volume: ボリューム(コンテナ間で共通してアクセス可能な領域)のマウント。host_dir : docker_dirという対応。ここではPyCharmのプロジェクト内のファイル(../)が/var/pycharm/prj以下に配置されるようになっている。

インタプリタの作成

こちらを参照。

追加ライブラリのインストール

  1. requirements.txtを更新
  2. イメージの再作成 docker-compose -f ./docker/docker-compose.yml build

これでPython interpreterを見るとライブラリが追加されてると思います。

一方、エディター上ではimportしてもライブラリが無いというエラーが出たままになったりします。

これはキャッシュの削除で直りました。