荆门做微信公众号的网站,广州建站外贸网站,自己的网站源代码一片空白,智慧团建官网登陆入口在与docker一起使用poetry时#xff0c;需要记住以下几点。
安装
安装poetry的正式方法是通过#xff1a;curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
这种方式允许poetry及其依赖项与依赖项分离。但是#xff0c;在我看来…在与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 [poetry1.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} \
PYTHONFAULTHANDLER1 \
PYTHONUNBUFFERED1 \
PYTHONHASHSEEDrandom \
PIP_NO_CACHE_DIRoff \
PIP_DISABLE_PIP_VERSION_CHECKon \
PIP_DEFAULT_TIMEOUT100 \
POETRY_VERSION1.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