Azure изображение здания трубопровода из неправильного Dockerfile - PullRequest
0 голосов
/ 27 января 2020

Мой проект содержит 2 файла Docker, один для серверной части и один для фиктивной базы данных. У меня есть конвейер сборки в Azure с использованием следующего сценария:

trigger:
- master

pool:
  vmImage: 'windows-latest'

variables:
  solution: '**/*.sln'
  buildPlatform: 'Any CPU'
  buildConfiguration: 'Release'

steps:
- task: NuGetToolInstaller@1

- task: NuGetCommand@2
  inputs:
    restoreSolution: '$(solution)'

- task: VSBuild@1
  inputs:
    solution: '$(solution)'
    msbuildArgs: '/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:DesktopBuildPackageLocation="$(build.artifactStagingDirectory)\WebApp.zip" /p:DeployIisAppPath="Default Web Site"'
    platform: '$(buildPlatform)'
    configuration: '$(buildConfiguration)'

- task: CopyFiles@2
  inputs:
    SourceFolder: './MyProject'
    Contents: '**'
    TargetFolder: '$(build.artifactStagingDirectory)'
    flattenFolders: true

- task: CopyFiles@2
  inputs:
    SourceFolder: './MyProject/Database'
    Contents: '**'
    TargetFolder: '$(build.artifactStagingDirectory)/Database'
    flattenFolders: true

- task: ArchiveFiles@2
  displayName: "Archive files"
  inputs:
    rootFolderOrFile: "$(build.artifactStagingDirectory)"
    includeRootFolder: true
    archiveFile: "$(System.DefaultWorkingDirectory)/build$(Build.BuildId).zip"

- task: PublishBuildArtifacts@1
  inputs:
    PathtoPublish: '$(build.artifactStagingDirectory)'
    ArtifactName: 'backend'

Я поместил туда 2 шага CopyFiles, потому что у меня есть 2 файла Docker, один в / MyProject для бэкэнда и один в / MyProject / Database для фиктивной базы данных. Таким образом, я могу выбрать между обоими Dockerfiles позже в моем конвейере выпуска. На рисунке ниже у меня есть один Dockerfile, помеченный в бэкэнд-папке, и вы можете видеть другой Dockerfile в папке базы данных.

enter image description here

Проблема в том, что даже несмотря на то, что я выбрал Dockerfile, помещенный в бэкэнд-папку для этапа выпуска, конвейер использует Dockerfile для базы данных. Предположительно, это потому, что это первый Dockerfile, с которым он сталкивается, даже если он находится в подкаталоге, указанном мной. Как я могу заставить мой конвейер использовать правильный Dockerfile?

1 Ответ

0 голосов
/ 27 января 2020

Найдена проблема: установка flattenFolders: true сделала так, что Dockerfile в подкаталоге перезаписал Dockerfile верхнего уровня. Установив значение false, я получил полную структуру папок и смог выбрать правильный файл Dockerfile.

...