Как сделать nginx custom log format в docker-compose?

Для настройки пользовательского формата логирования в Nginx, используя Docker Compose, необходимо сделать несколько шагов:

1. Создайте файл docker-compose.yaml, чтобы определить сервис Nginx и настроить его:

version: '3'
services:
  nginx:
    image: nginx
    ports:
      - 80:80
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/logs:/var/log/nginx

2. Создайте директорию nginx в текущей директории и в ней создайте две поддиректории: conf.d и logs. Первая служит для хранения файлов конфигурации Nginx, а вторая - для хранения лог-файлов:

$ mkdir nginx
$ cd nginx
$ mkdir conf.d
$ mkdir logs

3. Создайте файл конфигурации Nginx с именем custom.conf в директории nginx/conf.d:

$ cd nginx/conf.d
$ touch custom.conf

4. Откройте файл custom.conf и добавьте следующую конфигурацию:

http {
  log_format custom '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';

  server {
    listen 80;
    server_name localhost;

    access_log /var/log/nginx/access.log custom;

    location / {
      root /usr/share/nginx/html;
      index index.html index.htm;
    }
  }
}

5. В файле docker-compose.yaml добавьте описание volumes для сервиса Nginx, чтобы привязать директорию с нашим файлом конфигурации:

version: '3'
services:
  nginx:
    image: nginx
    ports:
      - 80:80
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
      - ./nginx/logs:/var/log/nginx

6. Остановите и удалите существующий контейнер Nginx:

$ docker-compose down

7. Запустите контейнер Nginx с использованием Docker Compose:

$ docker-compose up -d

8. Теперь вы можете отправлять запросы к вашему контейнеру Nginx и проверять лог-файлы в директории nginx/logs. Формат пользовательского журнала, указанный в нашем конфигурационном файле, будет использоваться для записи логов в файл access.log.

Надеюсь, это помогло вам настроить пользовательский формат логирования в Nginx с использованием Docker Compose. Обращайтесь, если у вас возникнут еще вопросы!