{"id":26770837,"url":"https://github.com/tomosatop/raspberrypi-poetry","last_synced_at":"2025-07-19T04:35:02.341Z","repository":{"id":228542062,"uuid":"774248184","full_name":"tomosatoP/raspberrypi-poetry","owner":"tomosatoP","description":"コンテナ内で python 仮想環境 poetry を使う","archived":false,"fork":false,"pushed_at":"2024-03-19T09:20:12.000Z","size":3,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-28T23:16:52.517Z","etag":null,"topics":["poetry","raspberry-pi"],"latest_commit_sha":null,"homepage":"","language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tomosatoP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2024-03-19T07:59:43.000Z","updated_at":"2024-03-19T08:02:16.000Z","dependencies_parsed_at":"2024-03-19T10:38:07.747Z","dependency_job_id":"faf2026c-7856-447b-828f-28ec503be80f","html_url":"https://github.com/tomosatoP/raspberrypi-poetry","commit_stats":null,"previous_names":["tomosatop/raspberrypi-poetry"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tomosatoP/raspberrypi-poetry","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomosatoP%2Fraspberrypi-poetry","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomosatoP%2Fraspberrypi-poetry/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomosatoP%2Fraspberrypi-poetry/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomosatoP%2Fraspberrypi-poetry/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tomosatoP","download_url":"https://codeload.github.com/tomosatoP/raspberrypi-poetry/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tomosatoP%2Fraspberrypi-poetry/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265889111,"owners_count":23844539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["poetry","raspberry-pi"],"created_at":"2025-03-28T23:16:56.665Z","updated_at":"2025-07-19T04:35:02.317Z","avatar_url":"https://github.com/tomosatoP.png","language":"Dockerfile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# コンテナ内で python 仮想環境 poetry を使う \n\nhttps://python-poetry.org/docs/\n\npython 仮想環境 poetry を docker image に固めて、使い回す。\n- target : Raspberry Pi OS 64-bit (bookworm)\n\n参考にした書籍 : \"動かして学ぶ！Python FastAPI 開発入門\" ISBN978-4-7981-7771-7\n\n\n## 固めた python 仮想環境 poetry のイメージの使い方\n\n### my_project コンテナの作成\n\n~~~sh\nmkdir .dockervenv\ndocker compose build --pull --no-cache\n~~~\n\nフォルダ構成の例 (src レイアウト) \n~~~sh\nmy_project/ ────────── README.md\n  │                    Dockerfile\n  │                    compose.yaml\n  │                    pyproject.toml\n  ├─ .dockervenv/ ──── (省略)\n  └─ src/my_package ── main.py\n           ├─ libs/ ── \n~~~\n\nDockerfile の例\n~~~Dockerfile\nFROM tomosatop/poetry\n\nCOPY pyproject.toml* poetry.lock* ./\nRUN if [ -f pyproject.toml ]; then poetry install --no-root; fi\n\nENTRYPOINT [\"poetry\", \"run\"]\nCMD [\"python\", \"main.py\"]\n~~~\n\ncompose.yaml の例\n~~~yaml\nservices:\n  application:\n    build: .\n    init: true\n    ports:\n      - 8000:8000\n    working_dir: /application\n    volumes:\n      - .:/application\n      - .dockervenv:/application/.venv\n    command: python main.py\n    environment:\n      WATCHFILES_FORCE_POLLING: true\n      TZ: Asia/Tokyo\n    restart: always\n~~~\n\n### 仮想環境の初期化\n\n対話的に `pyproject.toml` を作成、***既に作成済みなら不要***\n~~~sh\ndocker compose run --entrypoint \"poetry init --name my_package\" application\n~~~\n\n### 仮想環境に依存パッケージをインストール\n\n~~~sh\n# pyproject.toml に登録\ndocker compose run --entrypoint \"poetry add package1 package2\" application\n# poetry.lock を作成、もしくは更新\ndocker compose run --entrypoint \"poetry update --lock --only main\" application\n# poetry.lock, pyprojetct.toml の内容を反映\ndocker compose run --entrypoint \"poetry install --no-root --only main\" application\n~~~\n\u003e `my_package` もパッケージ化する場合、オプション `--no-root` を削除\n\n## 開発目的の依存パッケージを追加インストール\n\n例えば、 python リンター・フォーマッターの ruff の場合:\n~~~sh\ndocker compose run --entrypoint \"poetry add ruff --group dev\" application\ndocker compose run --entrypoint \"poetry update --lock --with dev\" application\ndocker compose run --entrypoint \"poetry install --no-root --with dev\" application\n~~~\n\n例えば、ドキュメント作成ツール sphinx の場合:\n\n~~~sh\ndocker compose run --entrypoint \"poetry add Sphinx sphinx-rtd-theme --group docs\" application\ndocker compose run --entrypoint \"poetry update --lock --with docs\" application\ndocker compose run --entrypoint \"poetry install --no-root --with docs\" application\n~~~\n\n例えば、テストツール pytest の場合:\n\n~~~sh\ndocker compose run --entrypoint \"poetry add pytest coverrage --group test\" application\ndocker compose run --entrypoint \"poetry update --lock --with test\" application\ndocker compose run --entrypoint \"poetry install --no-root --with test\" application\n~~~\n\n---\n\n## Build \u0026 push poetry-image\n\n~~~sh\ndocker build --push -t tomosatop/poetry .\n~~~\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomosatop%2Fraspberrypi-poetry","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftomosatop%2Fraspberrypi-poetry","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftomosatop%2Fraspberrypi-poetry/lists"}