我希望能使用 docker logs
看到 Nginx 日志,并且我希望挂载目录 /var/log/nginx
到宿主机下供之后查看
在 Nginx 的 Dockerfile 中是这样写的
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log
这样直接 run 起来没啥问题,能使用 docker logs nginx
看到访问日志。然而如果我写了 docker-compose 文件中指定 volumes
volumes:
- ./nginx_logs:/var/log/nginx
docker logs nginx
就无法看到 stdout 输出了,都是空白,但是日志文件是正常的,这是为啥呢?有没有解决方法?
1
also24 2020-08-30 00:32:52 +08:00
可以使用 tee 把日志同时输出到两个文件。
用法:echo "haha" | tee file1 file2 |
2
also24 2020-08-30 00:38:47 +08:00
修正,我忽略了你需要处理的是 nginx 的日志。
那么可以在 nginx 的配置中,通过配置多条 access_log 来达到将 log 同时写入多个文件的目的。 http://nginx.org/en/docs/http/ngx_http_log_module.html Several logs can be specified on the same level. |
3
also24 2020-08-30 00:44:55 +08:00
补充:
我想了一下,应该也可以从 Dockerfile 入手 ,在 docker-entrypoint.sh 这个文件中,执行 ln -sf 命令。 https://github.com/nginxinc/docker-nginx/blob/master/stable/alpine/docker-entrypoint.sh |
4
Te11UA OP @also24 已解决,在 docker-entrypoint.sh 中添加可以,感谢!
|