将参数从Docker Compose File传递到pyproject.toml和conf.py文件

sshcrbum  于 2023-06-21  发布在  Docker
关注(0)|答案(1)|浏览(135)

我有一个包含pyproject.toml文件的项目,其中包含name, version, descriptionauthors等元数据。此外,我还有一个conf.py文件,其中包含projectauthorversion信息。我想将这些值作为参数传递给我的Docker Composose文件,以自动化安装过程。我如何才能做到这一点?
我想使用pyproject.tomlconf.py的元数据动态设置Docker Composose文件中以下字段的值:

  • 项目名称
  • 项目版本
  • 项目说明
  • 作者

树结构:

project/
├── docker-compose.yml
├── pyproject.toml
└── docs/
    └── conf.py

docker-compose.yml的内容:

version: '3.8'
services:
  myapp:
    build:
      context: .
      args:
        - PROJECT_NAME=${PROJECT_NAME}
        - PROJECT_VERSION=${PROJECT_VERSION}
        - PROJECT_DESCRIPTION=${PROJECT_DESCRIPTION}
        - AUTHORS=${AUTHORS}

pyproject.toml的内容:

[project]
name = "My Project"
version = "1.0.0"
description = "A sample project"
authors = ["John Doe", "Jane Smith"]

docs/conf.py的内容:

project = 'My Project'
author = 'John Doe, Jane Smith'
version = '1.0.0'

有没有一种方法可以从相应的文件中提取这些值,并在设置过程中将它们作为参数传递给Docker Composose文件?任何关于如何实现这一点的指导或例子将不胜感激。

bvn4nwqk

bvn4nwqk1#

您遇到的主要问题是您试图使用docker-compose构建Python包。一个更好的方法是只使用docker build来创建它,但是如果它是CI的一部分,最好在修改这些之前做一个步骤。
1.如果你想坚持自己的方式,你可以尝试使用dotenv插件:How do I set an environment variable dynamically when using poetry shell?
1.更好的方法是,在启动docker build之前,使用toml cli来设置所需的更改。例如,通过以下方式更改版本:

toml set --toml-path pyproject.toml tool.poetry.version 0.2.0

相关问题