尝试复制文件夹的内容,当我像这样硬编码路径时它可以工作:
COPY ./my-folder /path/to/location
但需要能够更改此路径,因此我尝试使用构建参数,例如:
COPY ${folderVariable} /path/to/location
然后使用构建
--build-arg folderVariable=./my-folder
但它会复制“my-folder”所在文件夹中的所有内容,而我只想要“my-folder”的内容。
尝试复制文件夹的内容,当我像这样硬编码路径时它可以工作:
COPY ./my-folder /path/to/location
但需要能够更改此路径,因此我尝试使用构建参数,例如:
COPY ${folderVariable} /path/to/location
然后使用构建
--build-arg folderVariable=./my-folder
但它会复制“my-folder”所在文件夹中的所有内容,而我只想要“my-folder”的内容。
对于 COPY --from=$var ...
的情况,扩展仍然不起作用。但您可以创建中间图像作为别名,就像这样:
ARG docsBranch=4.5
ARG docsFullPath=registry.myCompany.pro/group/project-docs/docs:$docsBranch
# Lifehack
FROM $docsFullPath as docs
FROM node:10.21.0-buster-slim
WORKDIR /app
# Now we can use docs instead of $docsFullPath
COPY --from=docs /app/html/en ./documentation/en
在使用之前,您需要在 Dockerfile
中使用 ARG
定义它:
FROM alpine:3.3
ARG folderVariable=./my-folder # Optional default value to be `./my-folder`
COPY ${folderVariable} /opt/my-folder
并像这样构建:
docker build --build-arg folderVariable=./folder-copy -t test .
更多详情请参见:https://docs.docker.com/engine/reference/builder/#arg
ARG
有作用域(https://docs.docker.com/engine/reference/builder/#scope)。我已经为此苦战了数小时:P - Manolo
ARG docsImageName=registry.myCompany.pro/group/project-docs/docs:0.1
ARG docsFullPath=$docsImageName
- Neeraj Gulia