我有以下内容Dockerfile:
Dockerfile
FROM docker.m.our-intra.net/microsoft/dotnet:2.1-sdk WORKDIR /app COPY . ./aspnetapp/ WORKDIR /app/aspnetapp RUN dotnet publish -c Release -o out FROM docker.m.our-intra.net/microsoft/dotnet:2.1.4-aspnetcore-runtime WORKDIR /app COPY --from=docker.m.our-intra.net/microsoft/dotnet:2.1-sdk /app/aspnetapp/MyProject.WebApi/out ./ ENTRYPOINT ["dotnet", "MyProject.WebApi.dll"]
该映像已在本地成功构建。
我正在尝试配置Jenkins管道,并尝试Jenkinsfile使用以下步骤构建映像:
Jenkinsfile
stage('Build') { steps { script { echo 'Build...' sh 'docker build -t mytag:v${BUILD_NUMBER} -f Dockerfile .' echo 'Build Completed' } } }
但是在Jenkins控制台中,我得到了错误:
未知标志:来自
我应该如何编辑我的Dockerfile,尤其是--from标签,以便能够在本地和通过Jenkins管道构建图像?
--from
更新: 我已经将Docker更新为18.06.1-ce版本。仍然有同样的错误。
詹金斯版 2.89.4
Docker Pipeline插件安装版本1.9.1
更新2: 我添加了docker version向我展示Docker版本的命令:
docker version
stage('Build') { steps { script { echo 'Build...' sh 'docker version' sh 'docker build -t fact:v${BUILD_NUMBER} -f Dockerfile .' echo 'Build Completed' } } }
它输出以下内容:
Client: Version: 18.06.1-ce API version: 1.24 (downgraded from 1.38) Go version: go1.10.3 Git commit: e68fc7a Built: Tue Aug 21 17:25:03 2018 OS/Arch: linux/amd64 Experimental: false Server: Engine: Version: 1.12.6 API version: 1.24 (minimum version ) Go version: go1.8.3 Git commit: 3e8e77d/1.12.6 Built: Wed Dec 13 12:18:58 2017 OS/Arch: linux/amd64 Experimental: false
我认为这是docker引擎版本问题。您的Jenkins机器上的Docker引擎版本必须为17.05或更高版本,以支持--from或多阶段构建。
从文档-
多阶段构建是一项新功能,需要守护程序和客户端上使用Docker 17.05或更高版本。
参考-https: //docs.docker.com/develop/develop-images/multistage-build/#use- multi-stage-builds