Poetry Django Docker Pycharm で開発環境構築する


はじめに

pythonを始めて1年経ちますが、Pythonの環境構築はまだ慣れません。
特にパッケージマネージャは数ある言語の中でも最弱のように感じます。
なぜかmacで開発環境を構築しようとするとなぜか OpenSSL がらみのエラーが発生していました。

そんな悩みの解決に開発環境をdocker上に構築する方法をまとめました。

ソースは Github にあげてあります。

ディレクトリ構成

├── pyproject.toml
└── docker
    └── Dockerfile
    └── docker-compose.yml
└── mysite/*

ファイル

メインどころのファイルのみ記述します。
Djangoが作成したファイルは置いておきます。

pyproject.toml
[tool.poetry]
name = "python-dev-on-docker"
version = "0.1.0"
description = ""
authors = ["va034600"]

[tool.poetry.dependencies]
python = "^3.6"
django = "^3.1.1"

[tool.poetry.dev-dependencies]

[build-system]
requires = ["poetry>=0.12"]
build-backend = "poetry.masonry.api"
Dockerfile
FROM python:3.6.8
WORKDIR /usr/src/app

ENV POETRY_VERSION=1.0.10 \
    PATH="/root/.poetry/bin:$PATH"
RUN curl -sSL https://raw.githubusercontent.com/sdispater/poetry/${POETRY_VERSION}/get-poetry.py | python && \
    poetry config virtualenvs.create false
COPY ./pyproject.toml /usr/src/app/pyproject.toml
RUN poetry install

CMD tail -f /dev/null
docker-compose.yml
version: '3.5'
services:
  app:
    build:
      context: ../
      dockerfile: ./docker/Dockerfile
    working_dir: /usr/src/app/mysite
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ../mysite:/usr/src/app/mysite
    ports:
      - "8000:8000"

consoleからdocker-composeを実行

とりあえず、Pycharmなしの docker-compose up で動作を確認します。

$ cd docker
$ docker-compose up -d
$ curl http://127.0.0.1:8000/
$ docker-compose down
hello1

Pycharm でデバッグ

Pycharnの設定

Python Interpreter はdocker-composeで追加する

プロジェクトのInterpreterをdocker-composeにする

Configuration で runserverを作成する

ポイントは パラメータで runserver 0.0.0.0:8000 にすること

Pycharm でデバッグ実行する

これでブレークポイントも止まります。
ファイルを修正してdocker-composeの再起動なく反映もされます。

終わりに

これでホスト側がすっきり。
簡単に開発環境が構築できます。