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.