我正在尝试用Python + Poetry创建一个图像。
然而,在执行poetry install
之后,我要求Dockerfile生成一个poetry.lock
,然后生成一个requirements.txt
,以出现在我的项目根这些文件,然而,它没有发生。
Dockerfile:
WORKDIR /code
RUN pip install "poetry==$POETRY_VERSION"
RUN poetry config virtualenvs.create false
COPY pyproject.toml poetry.lock* /code/
RUN poetry install --no-root
RUN poetry lock --no-update
RUN poetry export --format=requirements.txt > requirements.txt
COPY . /code/
如果我使用这些相同的命令并在构建后直接在容器内执行它们,它会正常工作,然后我可以访问生成的文件。
$ poetry lock --no-update
Skipping virtualenv creation, as specified in config file.
Updating dependencies
Resolving dependencies... (0.2s)
Writing lock file
问题是在我的docker-compose.yml
,那里有一个"bind"在容器内完成所有替换的卷,删除构建过程中生成的文件。
web:
volumes:
- .:/code
也就是说,在构建过程中生成文件,然而,当容器通过compose
上传时,本地文件(没有poetry.lock
或requirements.txt
)在容器内被替换,从而理解这个问题。