docker - 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\""": 未知:您是否尝试将目录挂载到文件上(反之亦然)?检查指定的主机路径是否存在并且是预期的类型错误:启动项目时遇到错误。
怎么了?或者我需要提供哪些额外信息才能找到问题?
解决方案
由于您在 Windows 主机上,因此挂载路径之类的/etc/localtime
将不起作用,因为它们在您的系统上不存在。您使用的配置适用于基于 Linux 的主机。
尽管建议您从服务中删除这些挂载。但是,请记住,您需要保留 docker 套接字挂载,并且您需要针对 Windows 主机进行调整(因为您拥有的主机也适用于 Linux 主机)。您可以从这里尝试一些解决方案。
推荐阅读
- alpacajs - 使用 Json 对象更新时,Alpaca setValue 不替换值
- php - 使用贝宝实现产品购买的简单方法
- react-native - 如何在 android 上像 IOS 一样在 react native 中获得相同大小的滑块拇指
- javascript - 使用数组方法从数组中获取最受欢迎的值
- elasticsearch - 在 Elasticsearch 中查询最新创建的索引
- android - Unity android 构建未按预期工作
- python - 如何在 Keras 中查看 concatenate 的功能?
- hadoop - Tez 上的 Hive:无法找到或加载主类 400
- python - 如何使用来自输入的数据作为引用现有对象实例的参数?
- jquery - 如何在 jquery checkbox.each 循环中获取隐藏字段的值?