今天,我在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服务器上工作正常
答案 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