我有以下 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控制台中我收到错误:
Unknown flag: from
我应该如何编辑我的 Dockerfile
,特别是 --from
标签,以便能够在本地和通过Jenkins管道构建图像?
UPDATE: 我已将Docker更新为18.06.1-ce版本 . 还是有同样的错误 .
詹金斯诉 . 2.89.4
Docker Pipeline插件安装版本1.9.1
UPDATE 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
1 回答
我相信它是一个docker引擎版本问题 . 您的Jenkins机器上的Docker引擎版本需要为17.05或更高版本才能支持
--from
或多阶段构建 .来自docs -
参考 - https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds