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