将Python诗歌与Docker集成
你能给我一个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不要问任何互动问题 结果 你最终会得到类似的东西: 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=0.12.11 # 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 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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- doraemon的python 网络基础、进程和操作系统发展史
- python – psycopg2在executemany语句中插入表名
- python+selenium实现163邮箱自动登陆的方法
- 映射(应用函数)Django QuerySet
- Python – 如何解析并将JSON保存到MYSQL数据库
- 双十一就要到了!准备了五块钱!Python秒杀神器了解一下?秒
- 如何在Python中获取unicode月份名称?
- Python之路,Day9 - 异步IO\数据库\队列\缓存
- 高效的python熊猫等效项/带有多个参数的R扫描的实现
- Python 3如何使用正则表达式在两点之间获取字符串?