Last active
June 25, 2021 15:25
-
-
Save AtsushiSuzuki/c3659948caf62a0c3b914da9ca4c02bf to your computer and use it in GitHub Desktop.
small footprint poetry workflow Dockerfile without multi-stage build
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM python:3.9.5-slim | |
RUN --mount=type=cache,target=/root/.cache/pip \ | |
PYTHONDONTWRITEBYTECODE=1 \ | |
pip install pipx | |
WORKDIR /app | |
ADD pyproject.toml poetry.lock ./ | |
RUN --mount=type=cache,target=/root/.cache/pip \ | |
--mount=type=cache,target=/root/.local/pipx \ | |
--mount=type=cache,target=/root/.cache/pypoetry \ | |
--mount=type=cache,target=/root/.local/share/virtualenv \ | |
PYTHONDONTWRITEBYTECODE=1 \ | |
POETRY_VIRTUALENVS_IN_PROJECT=true \ | |
pipx run poetry install --no-dev | |
CMD [".venv/bin/python"] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[[package]] | |
name = "atomicwrites" | |
version = "1.4.0" | |
description = "Atomic file writes." | |
category = "dev" | |
optional = false | |
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" | |
[[package]] | |
name = "attrs" | |
version = "21.2.0" | |
description = "Classes Without Boilerplate" | |
category = "dev" | |
optional = false | |
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" | |
[package.extras] | |
dev = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface", "furo", "sphinx", "sphinx-notfound-page", "pre-commit"] | |
docs = ["furo", "sphinx", "zope.interface", "sphinx-notfound-page"] | |
tests = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins", "zope.interface"] | |
tests_no_zope = ["coverage[toml] (>=5.0.2)", "hypothesis", "pympler", "pytest (>=4.3.0)", "six", "mypy", "pytest-mypy-plugins"] | |
[[package]] | |
name = "certifi" | |
version = "2021.5.30" | |
description = "Python package for providing Mozilla's CA Bundle." | |
category = "main" | |
optional = false | |
python-versions = "*" | |
[[package]] | |
name = "chardet" | |
version = "4.0.0" | |
description = "Universal encoding detector for Python 2 and 3" | |
category = "main" | |
optional = false | |
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" | |
[[package]] | |
name = "colorama" | |
version = "0.4.4" | |
description = "Cross-platform colored terminal text." | |
category = "dev" | |
optional = false | |
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" | |
[[package]] | |
name = "idna" | |
version = "2.10" | |
description = "Internationalized Domain Names in Applications (IDNA)" | |
category = "main" | |
optional = false | |
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" | |
[[package]] | |
name = "iniconfig" | |
version = "1.1.1" | |
description = "iniconfig: brain-dead simple config-ini parsing" | |
category = "dev" | |
optional = false | |
python-versions = "*" | |
[[package]] | |
name = "packaging" | |
version = "20.9" | |
description = "Core utilities for Python packages" | |
category = "dev" | |
optional = false | |
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" | |
[package.dependencies] | |
pyparsing = ">=2.0.2" | |
[[package]] | |
name = "pluggy" | |
version = "0.13.1" | |
description = "plugin and hook calling mechanisms for python" | |
category = "dev" | |
optional = false | |
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" | |
[package.extras] | |
dev = ["pre-commit", "tox"] | |
[[package]] | |
name = "py" | |
version = "1.10.0" | |
description = "library with cross-python path, ini-parsing, io, code, log facilities" | |
category = "dev" | |
optional = false | |
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" | |
[[package]] | |
name = "pyparsing" | |
version = "2.4.7" | |
description = "Python parsing module" | |
category = "dev" | |
optional = false | |
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" | |
[[package]] | |
name = "pytest" | |
version = "6.2.4" | |
description = "pytest: simple powerful testing with Python" | |
category = "dev" | |
optional = false | |
python-versions = ">=3.6" | |
[package.dependencies] | |
atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} | |
attrs = ">=19.2.0" | |
colorama = {version = "*", markers = "sys_platform == \"win32\""} | |
iniconfig = "*" | |
packaging = "*" | |
pluggy = ">=0.12,<1.0.0a1" | |
py = ">=1.8.2" | |
toml = "*" | |
[package.extras] | |
testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] | |
[[package]] | |
name = "requests" | |
version = "2.25.1" | |
description = "Python HTTP for Humans." | |
category = "main" | |
optional = false | |
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" | |
[package.dependencies] | |
certifi = ">=2017.4.17" | |
chardet = ">=3.0.2,<5" | |
idna = ">=2.5,<3" | |
urllib3 = ">=1.21.1,<1.27" | |
[package.extras] | |
security = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)"] | |
socks = ["PySocks (>=1.5.6,!=1.5.7)", "win-inet-pton"] | |
[[package]] | |
name = "toml" | |
version = "0.10.2" | |
description = "Python Library for Tom's Obvious, Minimal Language" | |
category = "dev" | |
optional = false | |
python-versions = ">=2.6, !=3.0.*, !=3.1.*, !=3.2.*" | |
[[package]] | |
name = "urllib3" | |
version = "1.26.6" | |
description = "HTTP library with thread-safe connection pooling, file post, and more." | |
category = "main" | |
optional = false | |
python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4" | |
[package.extras] | |
brotli = ["brotlipy (>=0.6.0)"] | |
secure = ["pyOpenSSL (>=0.14)", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "certifi", "ipaddress"] | |
socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] | |
[metadata] | |
lock-version = "1.1" | |
python-versions = "^3.9" | |
content-hash = "39b00bc39237f8d356ab104a0e4accb90473527aec5eaafad03b3be7a461633f" | |
[metadata.files] | |
atomicwrites = [ | |
{file = "atomicwrites-1.4.0-py2.py3-none-any.whl", hash = "sha256:6d1784dea7c0c8d4a5172b6c620f40b6e4cbfdf96d783691f2e1302a7b88e197"}, | |
{file = "atomicwrites-1.4.0.tar.gz", hash = "sha256:ae70396ad1a434f9c7046fd2dd196fc04b12f9e91ffb859164193be8b6168a7a"}, | |
] | |
attrs = [ | |
{file = "attrs-21.2.0-py2.py3-none-any.whl", hash = "sha256:149e90d6d8ac20db7a955ad60cf0e6881a3f20d37096140088356da6c716b0b1"}, | |
{file = "attrs-21.2.0.tar.gz", hash = "sha256:ef6aaac3ca6cd92904cdd0d83f629a15f18053ec84e6432106f7a4d04ae4f5fb"}, | |
] | |
certifi = [ | |
{file = "certifi-2021.5.30-py2.py3-none-any.whl", hash = "sha256:50b1e4f8446b06f41be7dd6338db18e0990601dce795c2b1686458aa7e8fa7d8"}, | |
{file = "certifi-2021.5.30.tar.gz", hash = "sha256:2bbf76fd432960138b3ef6dda3dde0544f27cbf8546c458e60baf371917ba9ee"}, | |
] | |
chardet = [ | |
{file = "chardet-4.0.0-py2.py3-none-any.whl", hash = "sha256:f864054d66fd9118f2e67044ac8981a54775ec5b67aed0441892edb553d21da5"}, | |
{file = "chardet-4.0.0.tar.gz", hash = "sha256:0d6f53a15db4120f2b08c94f11e7d93d2c911ee118b6b30a04ec3ee8310179fa"}, | |
] | |
colorama = [ | |
{file = "colorama-0.4.4-py2.py3-none-any.whl", hash = "sha256:9f47eda37229f68eee03b24b9748937c7dc3868f906e8ba69fbcbdd3bc5dc3e2"}, | |
{file = "colorama-0.4.4.tar.gz", hash = "sha256:5941b2b48a20143d2267e95b1c2a7603ce057ee39fd88e7329b0c292aa16869b"}, | |
] | |
idna = [ | |
{file = "idna-2.10-py2.py3-none-any.whl", hash = "sha256:b97d804b1e9b523befed77c48dacec60e6dcb0b5391d57af6a65a312a90648c0"}, | |
{file = "idna-2.10.tar.gz", hash = "sha256:b307872f855b18632ce0c21c5e45be78c0ea7ae4c15c828c20788b26921eb3f6"}, | |
] | |
iniconfig = [ | |
{file = "iniconfig-1.1.1-py2.py3-none-any.whl", hash = "sha256:011e24c64b7f47f6ebd835bb12a743f2fbe9a26d4cecaa7f53bc4f35ee9da8b3"}, | |
{file = "iniconfig-1.1.1.tar.gz", hash = "sha256:bc3af051d7d14b2ee5ef9969666def0cd1a000e121eaea580d4a313df4b37f32"}, | |
] | |
packaging = [ | |
{file = "packaging-20.9-py2.py3-none-any.whl", hash = "sha256:67714da7f7bc052e064859c05c595155bd1ee9f69f76557e21f051443c20947a"}, | |
{file = "packaging-20.9.tar.gz", hash = "sha256:5b327ac1320dc863dca72f4514ecc086f31186744b84a230374cc1fd776feae5"}, | |
] | |
pluggy = [ | |
{file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, | |
{file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, | |
] | |
py = [ | |
{file = "py-1.10.0-py2.py3-none-any.whl", hash = "sha256:3b80836aa6d1feeaa108e046da6423ab8f6ceda6468545ae8d02d9d58d18818a"}, | |
{file = "py-1.10.0.tar.gz", hash = "sha256:21b81bda15b66ef5e1a777a21c4dcd9c20ad3efd0b3f817e7a809035269e1bd3"}, | |
] | |
pyparsing = [ | |
{file = "pyparsing-2.4.7-py2.py3-none-any.whl", hash = "sha256:ef9d7589ef3c200abe66653d3f1ab1033c3c419ae9b9bdb1240a85b024efc88b"}, | |
{file = "pyparsing-2.4.7.tar.gz", hash = "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1"}, | |
] | |
pytest = [ | |
{file = "pytest-6.2.4-py3-none-any.whl", hash = "sha256:91ef2131a9bd6be8f76f1f08eac5c5317221d6ad1e143ae03894b862e8976890"}, | |
{file = "pytest-6.2.4.tar.gz", hash = "sha256:50bcad0a0b9c5a72c8e4e7c9855a3ad496ca6a881a3641b4260605450772c54b"}, | |
] | |
requests = [ | |
{file = "requests-2.25.1-py2.py3-none-any.whl", hash = "sha256:c210084e36a42ae6b9219e00e48287def368a26d03a048ddad7bfee44f75871e"}, | |
{file = "requests-2.25.1.tar.gz", hash = "sha256:27973dd4a904a4f13b263a19c866c13b92a39ed1c964655f025f3f8d3d75b804"}, | |
] | |
toml = [ | |
{file = "toml-0.10.2-py2.py3-none-any.whl", hash = "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b"}, | |
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"}, | |
] | |
urllib3 = [ | |
{file = "urllib3-1.26.6-py2.py3-none-any.whl", hash = "sha256:39fb8672126159acb139a7718dd10806104dec1e2f0f6c88aab05d17df10c8d4"}, | |
{file = "urllib3-1.26.6.tar.gz", hash = "sha256:f57b4c16c62fa2760b7e3d97c35b255512fb6b59a259730f36ba32ce9f8e342f"}, | |
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[tool.poetry] | |
name = "sample" | |
version = "0.1.0" | |
description = "" | |
authors = [] | |
[tool.poetry.dependencies] | |
python = "^3.9" | |
requests = "^2.25.1" | |
[tool.poetry.dev-dependencies] | |
pytest = "^6.2.4" | |
[build-system] | |
requires = ["poetry-core>=1.0.0"] | |
build-backend = "poetry.core.masonry.api" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment