周末后无法在docker-compose中将文件挂载为卷,为什么?

时间:2019-03-04 14:58:12

标签: windows docker docker-compose

今天,我在docker环境中遇到了新错误。 我刚刚启动了我的项目(Web,Php和Postgres容器),但是Nginx容器没有启动,因为我随卷一起安装的site.conf是一个“目录”。

上周五没关系,对我来说很好。在这种情况下,我不做任何更改。 ;(

我创建了额外的docker-compose文件,您可以在其中尝试重现我的错误。

docker-compose文件:

version: "3"

services:
  nginx:
    container_name: nginxCr
    image: nginx:1.15.7
    ports:
      - "80:80"
    volumes:
      - .:/var/www
      - ./site.conf:/etc/nginx/conf.d/site.conf

site.conf可以为空以进行测试。

docker-compose up -d 之后 容器未运行。

docker日志nginxCr 提供以下内容:

  

2019/03/04 14:49:25 [crit] 1#1:pread()“ /etc/nginx/conf.d/site.conf”   失败(21:是目录)nginx:[crit] pread()   “ /etc/nginx/conf.d/site.conf”失败(21:是目录)

以某种方式启动docker(docker撰写)以创建目录,而不是链接我的配置文件。

我有Windows 10 Pro(内部版本17134)

Docker版本18.09.2,内部版本6247962

docker-compose版本1.23.2,内部版本1110ad01

更新: 问题似乎仅是Windows ...在我的Nix服务器上工作正常

2 个答案:

答案 0 :(得分:1)

解决方案是uncheck -> apply

然后

check -> apply在Docker设置中“共享驱动程序”中的硬盘驱动器

* facepalm *

答案 1 :(得分:0)

www个文件保留在一个单独的文件夹中,而不要保留在.中。有一个如下的撰写文件:

services:
  nginx:
    container_name: nginxCr
    image: nginx:1.15.7
    ports:
      - "80:80"
    volumes:
      - ./www:/var/www
      - ./site.conf:/etc/nginx/conf.d/site.conf

因此,在当前工作的目录中,您应该有一个名为www的文件夹(这样就不必合并卷)和一个名为site.conf的文件。即使它是一个空文件,也应将其放在目录中。否则,docker将使用该名称创建一个文件夹。

如果您有一个名为site.conf的文件夹,请删除该文件夹并执行touch site.conf,然后执行docker-compose up -d