python程序写诗_将Python诗歌与D结合起来

在与docker一起使用poetry时,需要记住以下几点。

安装

安装poetry的正式方法是通过:curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python

这种方式允许poetry及其依赖项与依赖项分离。但是,在我看来,这不是一件好事,原因有二:poetry版本可能会得到更新,它将破坏您的生成。在这种情况下,可以指定POETRY_VERSION环境变量。安装人员会尊重的

我不喜欢在没有任何可能的文件修改保护的情况下,把东西从internet导入容器的想法

所以,我使用pip install 'poetry==$POETRY_VERSION'。如您所见,我仍然建议您锁定您的版本。

另外,在您的pyproject.toml中固定此版本:[build-system]

# Should be the same as `$POETRY_VERSION`:

requires = ["poetry>=1.0"]

build-backend = "poetry.masonry.api"

它将保护您免受本地环境和docker环境之间版本不匹配的影响。

缓存依赖项

我们希望缓存我们的需求,并且只在pyproject.toml或poetry.lock文件更改时重新安装它们。否则构建会很慢。为了实现工作缓存层,我们应该放置:COPY poetry.lock pyproject.toml /code/

在安装poetry之后,但在添加任何其他文件之前。

虚拟人

接下来要记住的是virtualenv创建。我们不需要它在docker中。它已经被孤立了。所以,我们使用poetry config settings.virtualenvs.create false设置来关闭它。

开发与生产

如果像我一样在开发和生产中使用相同的Dockerfile,则需要根据某些环境变量安装不同的依赖项集:poetry install $(test "$YOUR_ENV" == production && echo "--no-dev")

这样$YOUR_ENV将控制要安装的依赖项集:all(默认)或production only with --no-dev标志。

您还可以添加更多选项以获得更好的体验:--no-interaction不要问任何互动问题

--no-ansi使输出更方便日志的标志

结果

你会得到类似的结果:FROM python:3.6.6-alpine3.7

ARG YOUR_ENV

ENV 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=1.0.0

# System deps:

RUN pip install "poetry==$POETRY_VERSION"

# Copy only requirements to cache them in docker layer

WORKDIR /code

COPY poetry.lock pyproject.toml /code/

# Project initialization:

RUN poetry config 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

2019-12-17更新将poetry更新为1.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值