简单记录一下今天遇到的一个问题,在配置服务器环境时,nginx用的docker挂载部署
docker run -d -p 80:80 --name nginx --privileged=true -v /usr/local/mydata/myconfig/nginx/nginx.conf:/etc/nginx/nginx.conf -v /usr/local/mydata/static/nginx/html:/etc/nginx/html -v /usr/local/mydata/mylog/nginx:/var/log/nginx nginx
但启动的时候看日志(docker logs --tail 100 nginx)一直提示说我文件地址不存在
nginx: [emerg] open() "/usr/local/mydata/mylog/nginx/access.log" failed (2: No such file or directory)
我就纳了闷了,文件地址我创建了的啊,赶紧检查一下对应目录
文件在的,错误文件也生成出来了,甚至里面还记录了这一条启动异常
那也就是说虽然文件存在,但文件却不存在
这让我想到了可能不是挂载目录的文件不存在,而是docker里的目录不存在。吓得我赶紧检查了一下nginx的配置文件。果然,因为我想要挂载启动,nginx的配置里使用的是我宿主机的地址
改成docker已有的文件地址就好了
error_log /var/log/nginx/error.log warn; #nginx的错误日志
pid /var/run/nginx.pid; #nginx启动时候的pid
在这里了解到一个小知识点,docker挂载启动时,运行时配置还是和docker内部环境一致,只是文件被单独提取出来类似软连接的方式来做修改,所以配置的时候还是要注意宿主机环境和docker环境的区别