【问题标题】:docker-compose up gives errors: Are you trying to mount a directory onto a file?docker-compose up 给出错误:您是否尝试将目录挂载到文件上?
【发布时间】:2021-02-17 00:09:46
【问题描述】:

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

我的 compose 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: 挂载\”/等/本地时间\”,以根文件系统\ “的/ var / lib中/泊坞窗/ overlay2 / 5111ae9606906d7a02c039fc8ea7987272d4b2738dabd763fde72bdf56c8bb59 /合并\” 的\ “的/ var / lib中/泊坞窗/ overlay2 / 5111ae9606906d7a02c039fc8ea7987272d4b2738dabd763fde72bdf56c8bb59 /合并的/ usr / share / zoneinfo中的/ etc / UTC \”导致\"不是目录\""":未知:您是否尝试将目录挂载到文件上(反之亦然)? ChCreating nextcloud-proxy ...完成 创建 nextcloud-letsencrypt ... 完成

错误:for db 无法启动服务 db:OCI 运行时创建失败:container_linux.go:349:启动容器进程导致“process_linux.go:449:容器初始化导致”rootfs_linux.go:58:mounting\”/etc/本地时间\”,以根文件系统\ “的/ var / lib中/泊坞窗/ overlay2 / 5111ae9606906d7a02c039fc8ea7987272d4b2738dabd763fde72bdf56c8bb59 /合并\” 的\ “的/ var / lib中/泊坞窗/ overlay2 / 5111ae9606906d7a02c039fc8ea7987272d4b2738dabd763fde72bdf56c8bb59 /合并的/ usr / share / zoneinfo中的/ etc / UTC \” 造成\ "not a directory\""": 未知:您是否尝试将目录挂载到文件上(反之亦然)?检查指定的主机路径是否存在并且是预期的类型 错误:启动项目时遇到错误。

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

【问题讨论】:

    标签: docker


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-02-08
      • 1970-01-01
      • 2019-04-19
      • 1970-01-01
      • 2023-01-03
      • 2017-06-22
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多