安装
安装诗歌的官方方式是:
curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
这种方式允许诗歌及其依赖关系与您的依赖关系隔离.但是,在我看来,出于两个原因,这不是一件好事:
>诗歌版本可能会得到更新,它会打破你的构建.在这种情况下,您可以指定POETRY_VERSION环境变量.安装人员会尊重它
>我不喜欢将内容从互联网传输到我的容器中的想法,没有任何可能的文件修改保护
所以,我使用pip install’poetry == $POETRY_VERSION’.如您所见,我仍然建议您固定您的版本.
另外,将此版本固定在pyproject.toml中:
[build-system]# Should be the same as `$POETRY_VERSION`:requires = ["poetry==0.12.11"]build-backend = "poetry.masonry.API"
它将保护您免受本地和泊坞窗环境之间版本不匹配的影响.
缓存依赖项
我们希望缓存我们的要求,只在pyproject.toml或poetry.lock文件更改时重新安装它们.否则构建将会很慢.要实现工作缓存层,我们应该:
copY poetry.lock pyproject.toml /code/
安装诗歌之后,但在添加任何其他文件之前.
VIRTUALENV
接下来要记住的是virtualenv创作.我们在码头工具中不需要它.它已经被孤立了.因此,我们使用诗歌配置settings.virtualenvs.create false设置将其关闭.
发展与生产
如果您像我一样使用相同的Dockerfile进行开发和生产,则需要根据某些环境变量安装不同的依赖关系集:
poetry install $(test "$YOUR_ENV" == production && echo "--no-dev")
这样$YOUR_ENV将控制将安装哪些依赖项集:all(默认)或仅使用–no-dev标志生成.
您可能还想添加更多选项以获得更好的体验:
> –no-interaction不要问任何互动问题
> –no-ansi flag使您的输出更友好
结果
你最终会得到类似的东西:
FROM python:3.6.6-alpine3.7ARG YOUR_ENVENV YOUR_ENV=${YOUR_ENV} \ PYTHONFAulTHANDLER=1 \ PYTHONUNBUFFERED=1 \ PYTHONHASHSEED=random \ PIP_NO_CACHE_DIR=off \ PIP_disABLE_PIP_VERSION_CHECK=on \ PIP_DEFAulT_TIMEOUT=100 \ POETRY_VERSION=0.12.11# System deps:RUN pip install "poetry==$POETRY_VERSION"# copy only requirements to cache them in docker layerworkdir /codecopY poetry.lock pyproject.toml /code/# Project initialization:RUN poetry config settings.virtualenvs.create false \ && poetry install $(test "$YOUR_ENV" == production && echo "--no-dev") --no-interaction --no-ansi# Creating folders,and files for a project:copY . /code
你可以在这里找到一个完全正常的实际例子:wemake-django-template
总结以上是内存溢出为你收集整理的将Python诗歌与Docker集成全部内容,希望文章能够帮你解决将Python诗歌与Docker集成所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)