# #docker #go #azure-devops
Вопрос:
Я создал конвейер Azure devops для создания и создания образа докера puch для API Golang. Если я выполняю «сборку go» в файле dockerfile, это работает, но я хочу создать проект go в отдельной задаче, а затем создать контейнер docker отдельно. Контейнер создан, но когда я запускаю программу, я получаю ошибку «standard_init_linux.go:228: пользовательский процесс exec вызван: такого файла или каталога нет». Ниже приведен файл dockerfile, который я использую :
FROM golang:1.16-alpine ENV GOOS=linux ENV GOARCH=amd64 RUN mkdir -p /app ADD . /app WORKDIR /app RUN ls RUN go mod download #RUN go build -o main EXPOSE lt;PortNamegt; ENTRYPOINT [ "/app/main"]
Мой трубопровод выглядит так :
trigger: - main resources: - repo: self variables: tag: '$(Build.BuildId)' stages: - stage: Build displayName: Build image jobs: - job: Build displayName: Build pool: vmImage: ubuntu-latest steps: - task: GoTool@0 inputs: version: '1.17.2' - task: Go@0 inputs: command: 'get' arguments: '-d' workingDirectory: '$(System.DefaultWorkingDirectory)' - task: Go@0 inputs: command: 'build' arguments: '-o main' workingDirectory: '$(System.DefaultWorkingDirectory)' - task: CopyFiles@2 inputs: TargetFolder: '$(Build.ArtifactStagingDirectory)' - task: Docker@2 inputs: containerRegistry: 'ContainerRegistryConnection' repository: 'APISetup' command: 'buildAndPush' Dockerfile: '**/Dockerfile' buildContext: '$(Build.ArtifactStagingDirectory)' tags: | $(Build.BuildId) Latest
В приведенном выше doe, если я включу «#RUN go build-o main» в файле docker и просто выполню задачу Docker@2 с контекстом сборки как.., тогда контейнер работает нормально .Пожалуйста, подскажите, чего мне может не хватать.
Комментарии:
1. Если у вас нет
go build
приложения, что должна/app/main
выполнять команда?2. Да, похоже
/app/main
, что это пропавший файл или каталог3. Перейдите к задаче@0, создайте приложение . Я попытался опубликовать артефакт и проверил это .