首页 > 解决方案 > docker-compose up 给出错误:您是否尝试将目录挂载到文件上?

问题描述

尝试在 windows 上使用 docker 安装 nextcloud(Docker 版本:19.03.13),我正在以管理员权限启动 windows powershell,并使用docker-compose up -d.

我的撰写 yaml 看起来像这样:

version: '3'  

services:

  proxy:
    image: jwilder/nginx-proxy:alpine
    labels:
      - "com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy=true"
    container_name: nextcloud-proxy
    networks:
      - nextcloud_network
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./proxy/conf.d:/etc/nginx/conf.d:rw
      - ./proxy/vhost.d:/etc/nginx/vhost.d:rw
      - ./proxy/html:/usr/share/nginx/html:rw
      - ./proxy/certs:/etc/nginx/certs:ro
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/tmp/docker.sock:ro
    restart: unless-stopped
    
  letsencrypt:
    image: jrcs/letsencrypt-nginx-proxy-companion
    container_name: nextcloud-letsencrypt
    depends_on:
      - proxy
    networks:
      - nextcloud_network
    volumes:
      - ./proxy/certs:/etc/nginx/certs:rw
      - ./proxy/vhost.d:/etc/nginx/vhost.d:rw
      - ./proxy/html:/usr/share/nginx/html:rw
      - /etc/localtime:/etc/localtime:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
    restart: unless-stopped
    
  db:
    image: mariadb
    container_name: nextcloud-mariadb
    networks:
      - nextcloud_network
    volumes:
      - db:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
    environment:
      - MYSQL_ROOT_PASSWORD=1984cstr
      - MYSQL_PASSWORD=cstrike
      - MYSQL_DATABASE=nextcloud
      - MYSQL_USER=nextcloud
    restart: unless-stopped
    
  app:
    image: nextcloud:latest
    container_name: nextcloud-app
    networks:
      - nextcloud_network
    depends_on:
      - letsencrypt
      - proxy
      - db
    volumes:
      - nextcloud:/var/www/html
      - ./app/config:/var/www/html/config
      - ./app/custom_apps:/var/www/html/custom_apps
      - ./app/data:/var/www/html/data
      - ./app/themes:/var/www/html/themes
      - /etc/localtime:/etc/localtime:ro
    environment:
      - VIRTUAL_HOST=nextcloud.example.de
      - LETSENCRYPT_HOST=nextcloud.example.de
      - LETSENCRYPT_EMAIL=realmail@gmail.com
    restart: unless-stopped
    
volumes:
  nextcloud:
  db:

networks:
  nextcloud_network:

但我收到以下错误:

错误:对于 nextcloud-mariadb 无法启动服务数据库:OCI 运行时创建失败:container_linux.go:349:启动容器进程导致“process_linux.go:449:容器初始化导致”rootfs_linux.go:58:mounting \"/etc/localtime \" to rootfs \"/var/lib/docker/overlay2/5111ae9606906d7a02c039fc8ea7987272d4b2738dabd763fde72bdf56c8bb59/merged\" at \"/var/lib/docker/overlay2/5111ae9606906d7a02c039fc8ea7987272d4b2738dabd763fde72bdf56c8bb59/merged/usr/share/zoneinfo/Etc/UTC\" caused \" not a directory\""": 未知:您是否尝试将目录挂载到文件上(反之亦然)?ChCreating nextcloud-proxy ... 完成 创建 nextcloud-letsencrypt ... 完成

错误:对于 db 无法启动服务 db:OCI 运行时创建失败:container_linux.go:349:启动容器进程导致“process_linux.go:449:容器初始化导致”rootfs_linux.go:58:安装\“/etc/localtime\” to rootfs \"/var/lib/docker/overlay2/5111ae9606906d7a02c039fc8ea7987272d4b2738dabd763fde72bdf56c8bb59/merged\" at \"/var/lib/docker/overlay2/5111ae9606906d7a02c039fc8ea7987272d4b2738dabd763fde72bdf56c8bb59/merged/usr/share/zoneinfo/Etc/UTC\" caused \"not a directory\""": 未知:您是否尝试将目录挂载到文件上(反之亦然)?检查指定的主机路径是否存在并且是预期的类型错误:启动项目时遇到错误。

怎么了?或者我需要提供哪些额外信息才能找到问题?

标签: docker

解决方案


由于您在 Windows 主机上,因此挂载路径之类的/etc/localtime将不起作用,因为它们在您的系统上不存在。您使用的配置适用于基于 Linux 的主机。

尽管建议您从服务中删除这些挂载。但是,请记住,您需要保留 docker 套接字挂载,并且您需要针对 Windows 主机进行调整(因为您拥有的主机也适用于 Linux 主机)。您可以从这里尝试一些解决方案。


推荐阅读