目前,我的docker容器正在将nginx访问日志打印到/dev/stdout。如何在docker容器中创建卷来存储访问日志?
我的Dockerfile:
FROM python:3.7
ENV APP_ROOT /src
ENV CONFIG_ROOT /config
RUN apt-get update
RUN apt-get install -y apt-utils
RUN apt-get -y install unixodbc-dev
RUN apt-get -y install default-libmysqlclient-dev
RUN mkdir ${CONFIG_ROOT}
COPY /app/requirements.txt ${CONFIG_ROOT}/requirements.txt
RUN pip install -r ${CONFIG_ROOT}/requirements.txt
RUN mkdir ${APP_ROOT}
WORKDIR ${APP_ROOT}
ADD /app/ ${APP_ROOT}我的docker-compose.yml:
version: "3"
services:
app:
build: .
container_name: django-gunicorn
restart: always
env_file:
- django.env
ports:
- "8000:8000"
command:
"gunicorn --workers=2 --bind=0.0.0.0:8000 mysite.wsgi:application"
nginx:
image: nginx:1.14
container_name: ngx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx:/etc/nginx/conf.d
- ./app/static:/static
depends_on:
- app我的nginx/default.conf:
limit_req_zone "$binary_remote_addr$request_uri" zone=one:10m rate=60r/m;
server {
listen 80;
server_name example.org;
server_tokens off;
location /static/ {
autoindex on;
alias /static/;
}
location / {
proxy_pass http://app:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
limit_req zone=one nodelay burst=30;
}
}我正在尝试将fail2ban和fluentd日志记录添加到此应用程序中,但首先我需要存储物理文件(而不是/dev/stout),该文件可用于其他日志记录目的。
谢谢你!
发布于 2020-07-23 23:01:39
默认情况下,Nginx容器将访问日志转发到STDOUT,将错误日志转发到STDERR。您可以在nginx Dockerfile中看到以下行:
# forward request and error logs to docker log collector
&& ln -sf /dev/stdout /var/log/nginx/access.log \
&& ln -sf /dev/stderr /var/log/nginx/error.log \所以您可以在容器日志中看到nginx日志:
docker logs -f ngx但如果您希望将nginx日志存储在docker卷中,请先创建您的自定义nginx docker镜像:
FROM nginx
RUN rm /var/logs/nginx/*然后,docker-compose.yml中的nginx服务将如下所示:
nginx:
build: ./nginx/
container_name: ngx
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx:/etc/nginx/conf.d
- ./app/static:/static
- ./log/nginx:/var/log/nginx
depends_on:
- app发布于 2019-02-28 16:32:19
除了上面添加音量的注释之外,您还必须调整主要的Nginx配置(最有可能是/etc/nginx/nginx.conf)和/或每个vhost的配置文件。
在大多数情况下,将这些添加到您的主配置中:
http {
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
}类似的条目可以是server或location中的palces
https://stackoverflow.com/questions/54912615
复制相似问题