docker-compose를 실행할 때“볼륨 'type'은 필수 속성입니다 '


1

docker-compose.yaml의 작동 방식을 이해하고 있습니다. 작성 파일 내부에 볼륨을 정의하고 마운트 지점에 로컬로 마운트하려고합니다. 볼륨을 마운트하기 위해 기본 .yaml을 실행하려고합니다.

version: '3.2'
services:
      mydb:
        image: postgres
        volumes:
          - db-data:var/lib/postgres/data
        ports:
          - "5432:5432"
        volumes:
          - db-data:
          - driver: local

그러나을 실행 docker-compose down하면 오류가 발생합니다.

$ docker-compose down
The Compose file '.\docker-compose.yml' is invalid because:
services.mydb.volumes 'type' is a required property
services.mydb.volumes 'type' is a required property

나는 이것에 익숙하지 않고 여전히 Docker와 함께 일하는 모든 뉘앙스를 이해하고 있습니다. 내 문제는 그것이 인 덴션 오류이거나 내선 번호로 버전 번호를 호출하는 방법 중 하나라고 생각하지만 오류를 이해할 수없는 것 같습니다.

답변:


1

편지 쓰기 파일은 공백에 민감합니다 (yaml 형식입니다). 작성 파일에는 두 개의 다른 볼륨 섹션이 있습니다. 하나는 볼륨이 최상위 들여 쓰기 레벨에 정의되고 다른 하나는 서비스 내에서 사용됩니다. 서비스 내에서 두 가지를 모두 정의하려고 시도했으며 두 번째 볼륨 세트가 볼륨 사용 방법을 정의하기 위해 잘못 정의되었습니다 (대상 디렉토리가 필요함). 다음은 시도하려는 것입니다.

version: '3.2'
services:
      mydb:
        image: postgres
        volumes:
          - db-data:var/lib/postgres/data
        ports:
          - "5432:5432"
volumes:
  db-data:

@BMitch에게 감사합니다. 대상 디렉토리를 정의하기 위해 권장되는 indention으로 시도했지만 오류가 발생 In file '.\docker-compose.yml', volume must be a mapping, not an array.합니다. 나는 이것이 또한 indention 오류라고 생각합니다. 맞습니까?
— user7298979

@ user7298979 복사하여 너무 많이 붙여 넣습니다. 두 번째 볼륨이 정의되었다고 생각했습니다. 드라이버를 로컬로 지정할 필요가 없으며 필드는 최상위 볼륨 정의를위한 배열이 아닌 맵입니다.
— BMitch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.