yosrO
yosrO

Reputation: 201

Specify service label in docker-compose file

When labeling a service in the docker-compose file only the created container is labeled and not the service itself.

I would like to add a label to a service created using a docker-compose file. When adding the label under the labels property, the label is only added to the corresponding container and not to the service itself.

In the documentation of the docker service create command there are two different options for labels:

I'm wondering why the label property in the docker-compose file only corresponds to the first option.

version: "3.7"

services:
  zalenium:
    image: zalenium:latest
    hostname: zalenium
    deploy:
      placement:
        constraints:
            - node.role == manager
    labels:
        - "de.zalando.gridRole=hub"
    ports:
        - "4444:4444"
    networks:
        - zalenium
    environment:
        - PULL_SELENIUM_IMAGE=true
        - ZALENIUM_PROXY_CLEANUP_TIMEOUT=1800
    command: ["start", "--swarmOverlayNetwork", "tau_zalenium", "--videoRecordingEnabled", "false"]

networks:
    zalenium:
        driver: overlay
        attachable: true

Actual result: Only the created container has the label "de.zalando.gridRole"

Expected result: The service should have the label "de.zalando.gridRole"

Upvotes: 9

Views: 45419

Answers (1)

Mihai
Mihai

Reputation: 10757

According to the docker-compose reference, you need to specify the service labels like this:

version: "3.7"
services:
  web:
    image: web
    deploy:
      labels:
        com.example.description: "This label will appear on the web service"

Add a deploy section and mention your labels there.

As with docker, here as well these labels are taken into account when deploying on a docker swarm. Otherwise they are ignored.

Upvotes: 17

Related Questions