Rのこと。

記事は引っ越し作業中。2023年中までに引っ越しを完了させてブログは削除予定

PyCharm + Docker + Python3.*で環境構築メモ

はじめに

PyCharm + Docker + Python3.*で環境構築した際のメモを残しておく。

バージョン

理由はわからんが、PyCharmの2020.2.*以上だと、下記のエラーが出る。

PyCharm Professional 2020.1.5

➜ docker -v
Docker version 19.03.13, build 4484c46d9d

➜ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.7
BuildVersion:   19H114

プロジェクトフォルダの作成

ここでは、デスクトップのtest_pjを例にする。下記のような構成のディレクトリを作成する。

➜ mkdir ~/Desktop/test_pj
➜ mkdir ~/Desktop/test_pj/docker
➜ touch ~/Desktop/test_pj/docker/Dockerfile
➜ touch ~/Desktop/test_pj/docker/docker-compose.yml
➜ touch ~/Desktop/test_pj/requirements.txt
➜ touch ~/Desktop/test_pj/main.py

➜ tree ~/Desktop/test_pj
/Users/aki/Desktop/test_pj
├── docker
│   ├── Dockerfile
│   └── docker-compose.yml
├── main.py
└── requirements.txt

Dockerfile

状況に応じて書き変える。実際にはpython:3.*.*-slimとか使うほうがいいかも。

FROM python:3.8
ADD . /opt
WORKDIR /opt
RUN pip install -r ./requirements.txt

docker-compose.yml

状況に応じて書き変える。

version: '3'
services:
  python3:
    build:
      context: ../
      dockerfile: ./docker/Dockerfile
    image: python:3.8
    container_name: python
    tty: true
    working_dir: '/opt'
    environment:
      TZ: Asia/Tokyo

main.py

状況に応じて書き変える。ここでは、適当にタイムゾーンが変わっていること、pandasの依存でインストールされるnumpyが使えることを確認するサンプルスクリプト

import datetime
import numpy

dt_now = datetime.datetime.now()
print(dt_now)
ary = numpy.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(ary)

requirements.txt

状況に応じて書き変える。

pandas==1.2.0

コンテナのインタプリタを作成

PyCharmのメニューから「Open」で「test_pj」プロジェクトを開く。次にインタプリタを指定するため、「PyCharm > Preferences」にすすみ、「Project: test_pj > Project Interpreter」の「ダイヤルマーク」をクリックし、「Add …」を選択。

f:id:AZUMINO:20201229213203p:plain

コンテナ名や、ymlファイルを指定、ymlファイルのサービス名を指定してOKを押すと、ビルドが始める。この内容でも~5分くらいかかる。

f:id:AZUMINO:20201229213542p:plain

ビルドが終わると、requirements.txtに記載したライブラリもインストールされている。これでコンテナのPython3をインタプリタとして設定できる。

f:id:AZUMINO:20201229213848p:plain

あとはいつもどおり、「Edit Configurations」から実行するpyファイルを設定し、インタプリタにコンテナのPyhton3を指定する。

f:id:AZUMINO:20201229214133p:plain

スクリプトを実行すると、下記のようにいつもとは異なる出力で結果が表示される。

f:id:AZUMINO:20201229214347p:plain

コンテナに入りたいときは、左下の「8: services」から「exec > create > /bin/sh」でコンテナに入ることができる。

f:id:AZUMINO:20201229221239p:plain

Dockerのコンテナ

Pycharm上で実行すると、下記のように勝手にもろもろ作成される。

➜ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
python              3.8                 9fe8e6de5188        12 minutes ago      1.02GB
pycharm_helpers     PY-201.8743.20      6c1f5de742bf        15 minutes ago      35.9MB
python              <none>              f5041c8ae6b1        6 days ago          884MB
busybox             latest              219ee5171f80        3 weeks ago         1.23MB

➜ docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
35711e02e024        python:3.8          "python -u /opt/proj…"   40 seconds ago      Exited (0) 37 seconds ago                       python
2aa945d9bf01        6c1f5de742bf        "/bin/sh"                15 minutes ago      Created                                         pycharm_helpers_PY-201.8743.20

参考サイト