Как заменить тег --from в Dockerfile, чтобы иметь возможность создавать образ из конвейера Jenkins - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть следующее 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

1 Ответ

0 голосов
/ 10 декабря 2018

Я считаю, что это проблема версии механизма докера.Для поддержки --from или многоэтапных сборок на вашем компьютере Jenkins должна быть версия движка Docker 17.05 или более поздняя.

Из документов -

Многоэтапные сборки являются новой функциейтребуется Docker 17.05 или выше для демона и клиента.

Ref - https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...