将Python诗歌与Docker集成

将Python诗歌与Docker集成,第1张

概述你能给我一个Dockerfile的例子,我可以在其中将poetry.lock和pyproject.toml所需的所有软件包安装到Docker的图像/容器中吗? 将诗歌与码头一起使用时,有几点需要注意. 安装 安装诗歌的官方方式是: curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | 你能给我一个Dockerfile的例子,我可以在其中将poetry.lock和pyproject.toml所需的所有软件包安装到Docker的图像/容器中吗?解决方法 将诗歌与码头一起使用时,有几点需要注意.

安装

安装诗歌的官方方式是:

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集成所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194405.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存