programing

오류: '.docker-compose.yml' 파일에서 볼륨은 문자열이 아닌 매핑이어야 합니다.

copysource 2023. 3. 26. 14:18
반응형

오류: '.docker-compose.yml' 파일에서 볼륨은 문자열이 아닌 매핑이어야 합니다.

질문:이 에러가 발생하는 이유는 무엇입니까?

오류: 파일 '.docker-compose.yml'에서 볼륨 'mariavolume'는 문자열이 아닌 매핑이어야 합니다.

도킹 스테이션 파일은 https://docs.docker.com/compose/wordpress/과 거의 동일합니다.

version: '2'
services:
  wordpress:
    image: wordpress:latest
    restart: always
    depends_on:
      - db
    ports:
      - 8080:80
    environment:
      WORDPRESS_DB_PASSWORD: example
      WORDPRESS_DB_HOST: 3306
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - maria_volume: /var/lib/mysql
volumes:
  maria_volume: ~/mariadb

제 경우, 이 문제는 제가 이 시스템을 추가하지 못했기 때문에 발생하였습니다.:볼륨 이름 뒤에 있습니다.

대신:

volumes:
    - mysqldata:

입력했습니다.

volumes:
    - mysqldata

docker-compose up위와 같은 오류를 내게 주었다.

저는 방금 이 문제에 직접 대처했습니다.볼륨에 데이터만 저장하려면 다음과 같이 하십시오.이 조작에 의해서volume의 일부로서 디스크에 유지되는Docker를 참조해 주세요.

다음 질문은 여기가 어디인가이다.

도커 이미지 - 기본 위치 - 안에 있습니다.

C:\Users\Public문서\Hyper-V\가상 하드디스크

db:
  image: mariadb
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: example
  volumes:
    - maria_volume: /var/lib/mysql

volumes:
  maria_volume:

물론 호스트 디렉토리를 도커에 매핑한 후, 호스트 디렉토리를 도커에 포함시키지 않고Docker를 참조해 주세요.그러면 다음과 같이 하면 됩니다.

db:
  image: mariadb
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: example
  volumes:
    - maria_volume: /var/lib/mysql

volumes:
  maria_volume:
    driver: local
    driver_opts:
      o: bind
      type: none
      device: /C/mariadb

호스트 디렉토리를 통해 볼륨으로 매핑할 때(적어도 윈도우즈에서) 문제가 발생할 수 있습니다.read/write아직 스스로 해결해야 할 문제인 것 같아요

유감스럽게도 이러한 기능은 없습니다.

도커 컴포지트로 최상위 볼륨을 매핑할 수 없습니다.

옵션은 다음과 같습니다.

  • 컨테이너당 볼륨을 추가하여 거기에 매핑합니다.(여기서 다니엘이 한 처럼)
  • (매핑이 있는) 작성 외부에 볼륨을 작성하여 작성에 사용합니다.

    volumes:
       maria_volume: 
           external:
               name: volume-name
    

이것을 시험해 보세요.

    volumes:
        - maria_volume: /var/lib/mysql
volumes:
    maria_volume: 
        external:
            name: ~/mariadb

볼륨의 올바른 구문은 다음과 같습니다.
volumes: first:
여기서 first는 볼륨에 사용할 자리 표시자 이름일 뿐입니다.

이것을 시험해 보세요.

version: '2'
services:
  ...
  db:
    image: mariadb
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - ~/mariadb:/var/lib/mysql

이거 먹어봐, 나한테는 효과가 있어

   volumes:
     - maria_volume: /var/lib/mysql

volumes:
  maria_volume: 
    drive: local

난 당신과 같은 문제에 부딪혔고 마지막 절망의 행동으로 난 당신을 위해 노력했어요

volumes:
  - maria_volume: /var/lib/mysql

전에

environment:
  MYSQL_ROOT_PASSWORD: example

어떤 마법을 썼는지는 모르겠지만 제 경우에는 효과가 있었어요.

알려주세요!

이 방법은 다음과 같습니다.

#docker_compose.yml:

volumes:
  postgres_data: {}
  static: { }

언급URL : https://stackoverflow.com/questions/41334488/error-in-file-docker-compose-yml-volume-must-be-a-mapping-not-a-string

반응형