在 Dockerfile 中指定包安装版本

问题描述 投票:0回答:1

我在尝试直接在 Dockerfile 中指定 Poetry 版本时遇到问题。我想在 Dockerfile 本身中声明 Poetry 版本,而不将其作为构建参数传递。这是我的 Dockerfile 和错误消息:

Dockerfile:

# Base image for the Docker container.
ARG BASE_IMAGE=python:3.6.6-alpine3.7

# Specify the Poetry version directly in the Dockerfile.
ARG POETRY_VERSION=1.2.0a2

# Rest of your Dockerfile...

# System deps: install poetry with the specified version
RUN pip install "poetry==${POETRY_VERSION}"

错误信息:

 => ERROR [2/8] RUN pip install "poetry=="                                                                                                                                                                                                                          1.5s 
------
 > [2/8] RUN pip install "poetry==":
#0 1.210 Collecting poetry==
#0 1.478   Could not find a version that satisfies the requirement poetry== (from versions: 0.1.0, 0.2.0, 0.3.0, 0.4.0, 0.4.0.post1, 0.4.1, 0.4.2, 0.5.0b1, 0.5.0b2, 0.5.0, 0.6.0, 0.6.1, 0.6.2, 0.6.3b1, 0.6.3b2, 0.6.3b3, 0.6.3b4, 0.6.3b5, 0.6.3b6, 0.6.3b7, 0.6.3, 0.6.4b1, 0.6.4, 0.6.5, 0.7.0b1, 0.7.0b2, 0.7.0b3, 0.7.0b4, 0.7.0, 0.7.1, 0.8.0a0, 0.8.0a1, 0.8.0a2, 0.8.0a3, 0.8.0a4, 0.8.0, 0.8.1a0, 0.8.1, 0.8.2, 0.8.3, 0.8.4, 0.8.5a0, 0.8.5, 0.8.6, 0.9.0a0, 0.9.0a1, 0.9.0a2, 0.9.0a3, 0.9.0, 0.9.1, 0.10.0a0, 0.10.0a1, 0.10.0a2, 0.10.0a3, 0.10.0, 0.10.1, 0.10.2, 0.10.3, 0.11.0a0, 0.11.0a1, 0.11.0a2, 0.11.0a3, 0.11.0a4, 0.11.0, 0.11.1, 0.11.2, 0.11.3, 0.11.4, 0.11.5, 0.12.0a0, 0.12.0a1, 0.12.0a2, 0.12.0a3, 0.12.0a4, 0.12.0a5, 0.12.0, 0.12.1, 0.12.2, 0.12.3, 0.12.4, 0.12.5, 0.12.6, 0.12.7, 0.12.8, 0.12.9, 0.12.10, 0.12.11, 0.12.12, 0.12.13, 0.12.14, 0.12.15, 0.12.16, 0.12.17, 1.0.0a0, 1.0.0a1, 1.0.0a2, 1.0.0a3, 1.0.0a4, 1.0.0a5, 1.0.0b1, 1.0.0b2, 1.0.0b3, 1.0.0b4, 1.0.0b5, 1.0.0b6, 1.0.0b7, 1.0.0b8, 1.0.0b9, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.0.4, 1.0.5, 1.0.6, 1.0.7, 1.0.8, 1.0.9, 1.0.10, 1.1.0a1, 1.1.0a2, 1.1.0a3, 1.1.0b1, 1.1.0b2, 1.1.0b3, 1.1.0b4, 1.1.0rc1, 1.1.0, 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.1.6, 1.1.7, 1.1.8, 1.1.9, 1.1.10, 1.1.11, 1.1.12, 1.1.13, 1.1.14, 1.1.15, 1.2.0a1, 1.2.0a2)
#0 1.480 No matching distribution found for poetry==
------
failed to solve: executor failed running [/bin/sh -c pip install "poetry==$POETRY_VERSION"]: exit code: 1

我尝试直接在 Dockerfile 中指定 Poetry 版本,但它仍然给我这个错误。如何在 Dockerfile 中正确声明和使用 Poetry 版本而不遇到此问题?

python docker dockerfile environment-variables arguments
1个回答
0
投票

将您的

Dockerfile
修改为:

ARG POETRY_VERSION=1.6.1
RUN pip install "poetry==${POETRY_VERSION}"

以上设置为默认值。意思是,如果您通过

--build-arg POETRY_VERSION=
(用于构建 docker 映像),则应选择该值(而不是您在
Dockerfile
中设置的默认值)。

© www.soinside.com 2019 - 2024. All rights reserved.