Я отчаянно пытаюсь создать проект do tnet core 3.1, а затем создать из него образ с docker и pu sh, который помещается в мой реестр
Вот мой azure -pipeline.yaml:
# Starter pipeline
# Start with a minimal pipeline that you can customize to build and deploy your code.
# Add steps that build, run tests, deploy, and more:
# https://aka.ms/yaml
trigger:
- none
pool:
vmImage: 'ubuntu-latest'
variables:
- group: obs-devops-global-variables
# Put variable group for your team (variable groups in Pipelines-->Library)
- group: obs-devops-tso-variables
- name: AzureSubscription
value: 'obs-acr-sc-dev'
- name: ACR
value: obsaksacrdev.azurecr.io
- name: ImagePrefix
value: obs-$(team)/
# Put name of Image same like name of repo
- name: ImageName
value: obs-datalake-raw2gold
- name: BuildConfiguration
value: 'Release'
- name: imageTag
value: '4.0.$(build.buildId)'
- name: rid
value: 'linux-x64'
steps:
#- script: |
# dotnet restore
# dotnet build
# dotnet publish ./RawToGold.Worker/ --configuration $(buildConfiguration)
- task: UseDotNet@2
inputs:
version: '3.1.x'
packageType: sdk
- task: DotNetCoreCLI@2
displayName: 'dotnet build $(buildConfiguration)'
inputs:
command: 'build'
arguments: '-r $(rid) --configuration $(buildConfiguration) /p:SourceRevisionId=$(Build.SourceVersion)'
- task: DotNetCoreCLI@2
displayName: "Publish"
inputs:
command: 'publish'
publishWebProjects: false
arguments: './RawToGold.Worker/ -r $(rid) --configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: false
- task: Docker@1
displayName: 'Containerize the micro service'
inputs:
useDefaultContext: false
azureSubscriptionEndpoint: '$(AzureSubscription)'
azureContainerRegistry: '$(ACR)'
dockerFile: 'Dockerfile'
imageName: '$(ACR)/$(ImagePrefix)$(ImageName):$(imageTag)'
- task: Docker@1
displayName: 'Push image'
inputs:
azureSubscriptionEndpoint: '$(AzureSubscription)'
azureContainerRegistry: '$(ACR)'
command: 'Push an image'
imageName: '$(ACR)/$(ImagePrefix)$(ImageName):$(imageTag)'
- task: PublishPipelineArtifact@1
displayName: 'Publish Pipeline Artifact'
inputs:
artifactName: 'k8s'
targetPath: 'k8s'
А вот мой docker файл
FROM mcr.microsoft.com/dotnet/core/runtime:3.1-bionic
RUN groupadd --gid 1000 rawtogold \
&& useradd --uid 1000 --gid rawtogold --shell /bin/bash --create-home rawtogold
USER rawtogold
#Use locally
#COPY ./RawToGold.Worker/bin/Release/netcoreapp3.1/publish /home/rawtogold/app/
COPY . /home/rawtogold/app/
RUN ls /home/rawtogold/app/
WORKDIR /home/rawtogold/app/
ENTRYPOINT ["dotnet", "RawToGold.Worker.dll"]
Но скомпилированный код не копируется в изображение? Я попробовал и COPY . /home....
, и COPY ./RawToGold.Worker/bin/Release/netcoreapp3.1/publish
, которые я использовал бы на своей локальной машине для разработки образа. Но как мне контролировать buildContext файла Docker? И добавление ввода: buildContext к задаче НЕ помогает в Docker@1 Если я создаю его с помощью powershell (строки без комментария вверху), я могу получить доступ к файлам с помощью ./RawToGold.Worker/bin/Release/netcoreapp3.1/publish
Но я бы хотел знать, как управлять контекстом сборки docker в docker@1