Ошибка Ключи карты должны быть уникальными при использовании поля расширения YAML в docker compose для приложения django
hi У меня есть это в моем YAML файле, и я получаю ошибку Map keys must be unique в <<: *common в django service.
version: '3.4'
x-common: &common
restart: unless-stopped
networks: docker_django
x-django-build: &django-build
build:
context: .
dockerfile: ./DockerFile.dev
services:
django:
<<: *django-build
<<: *common
container_name: docker_django_dc01
command: bash -c "python manage.py runserver 0.0.0.0:8000"
ports:
- 8000:8000
volumes:
- ./:/code
depends_on:
- postgres
<<: *reference на самом деле не является ключевым словом; это обычная запись отображения YAML с ключом <<, которая, как оказалось, имеет специальное обращение. О SO см. Что такое синтаксис << (двойная стрелка влево) в YAML и где он специфицирован? ; который, в свою очередь, ссылается на проект спецификации Merge Key Language-Independent Type for YAML™ Version 1.1.
Поскольку << является ключом отображения, парсерам YAML, которые пытаются преобразовать отображения в словари, не понравится видеть его множество. Напротив, спецификация допускает последовательность в качестве значения, поэтому для данного конкретного использования вы можете написать
<<: [*django-build, *common]
(Также подумайте, нужно ли вам такое количество пользовательских настроек. Compose предоставляет сеть с именем default для вас, так что вам обычно не нужно networks:; если вы просто назовете свой Dockerfile, ну, Dockerfile тогда вы можете использовать однострочный build: . Это позволит избежать необходимости использования синтаксиса YAML alias/anchor здесь.)