MilleB
MilleB

Reputation: 1580

How to run a docker container in azure devops?

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.

Upvotes: 2

Views: 6936

Answers (3)

MilleB
MilleB

Reputation: 1580

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.

Upvotes: 4

Andriy Bilous
Andriy Bilous

Reputation: 2522

There is no option run in specification

https://learn.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

Upvotes: 1

BinaryMonster
BinaryMonster

Reputation: 1218

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

Upvotes: 1

Related Questions