Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
poetryでパッケージ管理 on Docker
Search
mizzsugar
August 08, 2019
770
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
poetryでパッケージ管理 on Docker
mizzsugar
August 08, 2019
More Decks by mizzsugar
See All by mizzsugar
自分のPCにPython環境を用意して_VSCodeでStreamlitアプリを動かすまでの8ステップ.pdf
mizzsugar
0
130
Colabのみで初心者向けPythonハンズオン.pdf
mizzsugar
0
93
厳しさとゆるさの間で迷う人に捧げる個人開発記
mizzsugar
0
76
SQLModel入門〜クエリと型〜
mizzsugar
3
1.6k
フルリモート向いてないと思っていた私が、なんだかんだ健やかに 1年半フルリモート出来ている話
mizzsugar
1
170
Djangoでのプロジェクトだって型ヒントを運用出来る!
mizzsugar
4
9.2k
「動くものは作れる」の一歩先へ 〜「自走プログラマー」の紹介〜
mizzsugar
0
660
pytestの第一歩 〜「テスト駆動Python」の紹介〜
mizzsugar
3
500
データ分析ツール開発でpoetryを使う選択肢
mizzsugar
1
1.2k
Featured
See All Featured
Navigating Weather and Climate Data
rabernat
0
550
A Tale of Four Properties
chriscoyier
163
24k
4 Signs Your Business is Dying
shpigford
187
23k
Balancing Empowerment & Direction
lara
6
1.3k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
510
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
350
The Limits of Empathy - UXLibs8
cassininazir
1
700
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.2k
Into the Great Unknown - MozCon
thekraken
41
2.8k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
610
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
350
Mind Mapping
helmedeiros
1
390
Transcript
Poetryでパッケージ管理 on Docker @mizzsugar0425 2019/08/08 Stapy
お前誰よ ・みずきと申します。 ・先月、Pythonを始めて1年が経過しました。 ・仕事:DjangoでWeb開発 ・仕事外:Pyramid/Nuxt/TypeScriptを頑張っている ・美味しい水出しコーヒーが飲みたい
pip install -r requirements.txt
以前はpip installのみで パッケージ管理していました。
パッケージ同士の依存関係を 管理できない問題
Docker上で Pipenvやpoetryを使いたい
Poetryやるぞお! poetryにした理由 ・lockがPipenvより早い ・(個人的な理由だけど)pyproject.tomlとsetup.pyを自動生成してくれ るので今後のPyPIデビューに備えて使いこなしたい
ディレクトリ構成 ├── app │ ├── poetry.lock │ ├── project │
│ ├── アプリケーションコード諸々 │ └── pyproject.toml ├── docker │ ├── app │ │ ├── Dockerfile │ │ └── start-server.sh │ ├── etc │ │ └── gunicorn.conf │ ├── db │ └── Dockerfile └── docker-compose.yaml
docker-compose.yaml version: "3" services: app: build: context: ./docker/app dockerfile: Dockerfile
env_file: .env volumes: - ./app:/home/app - ./docker/app:/home/docker - ./docker/etc/gunicorn.conf:/etc/gunicorn.conf - ./docker/var/log/gunicorn:/var/log/gunicorn working_dir: /home/app entrypoint: "/bin/sh" command: "/home/docker/start-server.sh" ports: - "8080:8080" tty: true depends_on: - db db: build: context: ./docker/db dockerfile: Dockerfile env_file: .env ports: - 5432:5432 volumes: - ./docker/postgres/pgsql-data:/var/lib/postgresql/data PythonコンテナとDBコンテナの 2つでアプリケーションを動かすとい う設定です。
pyproject.tomlとpoetry.lockどこにおく? 案1:docker/app以下 案2:app以下 →案1でやってたけど、パッケージインストールしたりアップデー トするたびにdocker/app以下に移動するのが 面倒なので案2の方が楽だな・・・と思った
コンテナ立ち上がると同時に色々してほしい! →シェルスクリプトにやってもらおう
シェルスクリプトにやってもらう #!/bin/bash cd /home/app poetry install cd project if [
"${DJANGO_ENV}" = 'production' ]; then poetry run python manage.py migrate --settings config.settings poetry run python manage.py collectstatic --noinput poetry run gunicorn config.wsgi:application -c /etc/gunicorn.conf -b :8080 else poetry run python manage.py migrate poetry run python manage.py runserver 0.0.0.0:8000 fi
シェルスクリプトにやってもらう #!/bin/bash cd /home/app poetry install cd project if [
"${DJANGO_ENV}" = 'production' ]; then poetry run python manage.py migrate --settings config.settings poetry run python manage.py collectstatic --noinput poetry run gunicorn config.wsgi:application -c /etc/gunicorn.conf -b :8080 else poetry run python manage.py migrate poetry run python manage.py runserver 0.0.0.0:8000 fi poetryでインストールしたパッ ケージをインストールします。 poetry run を頭につけると poetryが作ってくれる仮想環境で 操作がされる動きになります。
docker-compose.yamlにコマンド追加 (次のスライドへ)
docker-compose.yaml version: "3" services: app: build: context: ./docker/app dockerfile: Dockerfile
env_file: .env volumes: - ./app:/home/app - ./docker/app:/home/docker - ./docker/etc/gunicorn.conf:/etc/gunicorn.conf - ./docker/var/log/gunicorn:/var/log/gunicorn working_dir: /home/app entrypoint: "/bin/sh" command: "/home/docker/start-server.sh" ports: - "8080:8080" tty: true depends_on: - db db: build: context: ./docker/db dockerfile: Dockerfile env_file: .env ports: - 5432:5432 volumes: - ./docker/postgres/pgsql-data:/var/lib/postgresql/data
Docker環境内での操作 poetryでインストールしたパッケージを使った操作をしたい場 合、 poetryが用意した仮想環境に入る必要がある。
docker-compose exec app bash まずPythonコンテナに入って cd project poetry run python
manage.py shell poetryが作成してくれる仮想環境にて実行! poetry shell cd project poetry run python manage.py shell こちらでも可
パッケージの追加・アップデート poetry add [パッケージ名] まずPythonコンテナに入ってから・・・ 新しくパッケージを追加 poetry update [パッケージ名] パッケージのアップデート
リポジトリはこちら https://github.com/mizzsugar/poetry_on_docker
ブログもあるよ http://mizzsugar.hatenablog.com/entry/2019/08/ 08/191318
おまけ 〜Pipenv編〜 (ぶっちゃけやることはあんま変わらなかった) https://github.com/mizzsugar/pipenv_on_docke r
ありがとうございました!