我有以下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
构建映像:
stage('Build') {
steps {
script {
echo 'Build...'
sh 'docker build -t mytag:v${BUILD_NUMBER} -f Dockerfile .'
echo 'Build Completed'
}
}
}
但是在Jenkins控制台中,我得到了错误:
未知标志:来自
我应该如何编辑Dockerfile
,尤其是--from
标签,以便能够在本地以及通过Jenkins管道构建图像?
更新: 我已经将Docker更新为18.06.1-ce版本。仍然有相同的错误。
詹金斯版2.89.4
Docker Pipeline插件安装版本1.9.1
更新2:
我添加了docker version
命令向我展示Docker版本:
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
答案 0 :(得分:1)
我认为这是docker引擎版本问题。您的Jenkins机器上的Docker引擎版本必须为17.05或更高版本,才能支持--from
或多阶段构建。
来自文档-
多阶段构建是一项新功能,需要Docker 17.05或更高版本 在守护程序和客户端上。
Ref-https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds