问题:无法使用 docker-compose 挂载文件

我运行docker-compose -f docker-compose.prod.yml up并立即收到错误消息:

ERROR: for frontend  Cannot start service frontend: OCI runtime create failed: container_linux.go:348: starting container process caused "process_linux.go:402: container init caused \"rootfs_linux.go:58: mounting \\\"/c/Users/James/Projects/mysite/frontend/conf/nginx/mysite.template\\\" to rootfs \\\"/var/lib/docker/aufs/mnt/e7a2a699ae3e9ede0dd60b7cfdebb7f2d3adf71e8175157f3c9e88d3285796d2\\\" at \\\"/var/lib/docker/aufs/mnt/e7a2a699ae3e9ede0dd60b7cfdebb7f2d3adf71e8175157f3c9e88d3285796d2/etc/nginx/conf.d/default.conf\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type

我的mysite.template文件存在。我正在使用带有docker-machine的数字海洋。在开发中,我没有在同一个操作系统(ubuntu 16)上运行这个问题。我在 windows 上使用 docker 工具箱进行开发。

这是来自docker-compose.prod.yml的前端配置:

frontend:
image: nginx:stable-alpine
restart: always
networks:
  - web
  - default
volumes:
  - ${PWD}/frontend/conf/nginx/mysite.template:/etc/nginx/conf.d/default.conf
  - ${PWD}/frontend/public:/var/www/html
labels:
  - "traefik.enable=true"
  - "traefik.basic.frontend.rule=Host:mysite.com"
  - "traefik.basic.port=80"

我按照文档的说明进行操作。任何想法出了什么问题?

解答

您只能将主机目录挂载为卷,而不是 Docker 中的单个文件。

在你的volumes定义中,而不是这个:- ${PWD}/frontend/conf/nginx/mysite.template:/etc/nginx/conf.d/default.conf

你应该这样做:- ${PWD}/frontend/conf/nginx:/etc/nginx/conf.d

Logo

开发云社区提供前沿行业资讯和优质的学习知识,同时提供优质稳定、价格优惠的云主机、数据库、网络、云储存等云服务产品

更多推荐