LoginSignup
1
3

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-09-13

はじめに

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で追加する

スクリーンショット 2020-09-13 9.41.41.png

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

Preferences.png

Configuration で runserverを作成する

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

Pycharm でデバッグ実行する

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

終わりに

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

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3