How to run a docker container in azure devops?

Viewed 2596

I'm currently playing around with docker containers and azure devops with the goal to run a couple of tests from it.

This is what I currently do:

  1. I have created a dockerfile in my repo
  2. I have created a pipline that build and push an image to container registry
  3. I have checked that the image exist in container registry
  4. I have started on a new release pipline with the following task:
    • A login task:

       steps:
        - task: Docker@2
          displayName: Login
          inputs:
            containerRegistry: nameOfMyRegistry
            command: login
      
    • A run task:

      steps:
         - task: Docker@2
           displayName: 'Run tests'
           inputs:
              containerRegistry: nameOfRegistry
              repository: nameOfRepository
              command: run
              arguments: 'nameOfImage -p 8089:8089 -f tests.py --run-time 30s -u 1 -r 1'
      

But after I run this I get the following error:

            2021-04-26T11:39:38.9204965Z ##[error]Unable to find image 'nameOfMyImage:latest' locally

            2021-04-26T11:39:38.9228444Z ##[error]docker: Error response from daemon: manifest for nameOfMyImage:latest not found: manifest unknown: manifest tagged by "latest" is not found.

So I'm not sure if I'm missing something? I put in all information to my azure container registry so I thought it would just get the image from it but it seems like it can't find it.

3 Answers

I know I got answer that say you can't use run with the Docker@2 task but I actually managed to get it to run now. The problem was that I used the wrong name of the image. I had to write it like this:

nameOfRegistry.azurecr.io/nameOfRepository:tag

So just bad from me but I will leave this here if someone manage to do the same mistake.

Nothing complex, looks like task input command supports only buildAndPush, build, push, login, logout and it doesn't support run reference

Something like this with script should work. reference

resources:
  containers:
  - container: builder
    image: ubuntu:18.04
steps:
- script: echo "I can run inside the container (it starts by default)"
  target:
    container: builder

There is no option run in specification

https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/build/docker?view=azure-devops#task-inputs

To build an application and run tests right after the build you can use following commands:

steps:
- task: Docker@2
  displayName: Login to ACR
  inputs:
    command: login
    containerRegistry: dockerRegistryServiceConnection1
- task: Docker@2
  displayName: Build
  inputs:
    command: build
    repository: contosoRepository
    tags: tag1

If you want to run tests in Docker container, you should use

Related