Ответы пользователя по тегу Docker
  • Как настроить отдачу метрик с nginx?

    rqdkmndh
    @rqdkmndh
    Web-разработчик
    Такой вариант в nginx.conf:
    server {
            listen       80;
            server_name  localhost;
    
            location / {
                root   /var/www/html;
                index  index.php;
            }
    
            location /metrics {
                stub_status;
                allow 127.0.0.1;
                deny all;
            }
    
            location ~ \.php$ {
                root           /var/www/html;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index  index.php;
                fastcgi_param  SCRIPT_FILENAME  /var/www/html$fastcgi_script_name;
                include        fastcgi_params;
            }
        }

    Описание метрик Nginx /metrics:
    Active connections — текущее количество активных соединений.
    accepts — общее количество соединений, принятых сервером.
    handled — количество соединений, обработанных сервером (совпадает с accepts, если нет ошибок).
    requests — общее количество обработанных запросов.
    Reading — количество соединений, которые Nginx читает от клиента.
    Writing — количество соединений, в которые Nginx пишет ответ клиенту.
    Waiting — количество keep-alive соединений, которые открыты и ожидают нового запроса.

    stub_status — это директива, которая включает модуль ngx_http_stub_status_module. Этот модуль выводит минимальную статистику о текущем состоянии Nginx
    Ответ написан
    Комментировать
  • Почему не назначаются разрешения на папку в volume-е?

    rqdkmndh
    @rqdkmndh
    Web-разработчик
    Изменение прав доступа к папке в Dockerfile с помощью RUN chmod не действует на тома (volumes), примонтированные при помощи инструкции volumes в docker-compose.yml. Это связано с тем, что тома подключаются после выполнения всех команд указанных в Dockerfile, и их содержимое не изменяется в процессе построения образа, что означает, что фактические данные тома и права доступа управляются внешним хостом.

    Таким образом, для того чтобы установить нужные права, это должно быть сделано снаружи контейнера, на уровне вашей системы файлов хоста, и эти изменения будут отражены внутри контейнера за счет того, что папка примонтирована. Вы можете также установить права доступа непосредственно на хосте перед тем, как запустить контейнер, используя команды chown и chmod на машине хоста.

    Если же настройка прав доступа должна выполняться внутри контейнера (например, при инициализации или запуске), вы можете использовать команду entrypoint или command в docker-compose.yml для запуска скрипта, который будет устанавливать нужные права доступа при запуске контейнера каждый раз. Пример такого скрипта:
    # Dockerfile
    ...
    
    # Установка прав доступа в скрипте инициализации
    COPY ./set-permissions.sh /usr/local/bin/set-permissions.sh
    RUN chmod +x /usr/local/bin/set-permissions.sh
    
    # Запуск скрипта при старте контейнера
    ENTRYPOINT ["set-permissions.sh"]
    CMD ["apache2-foreground"]

    bash:
    # set-permissions.sh
    #!/bin/bash
    chmod o+w /app/web/uploads
    chmod o+w /app/web/uploads/result
    exec "$@"

    Этот скрипт изменит права на каталоги при каждом запуске контейнера, не зависимо от прав на машине хоста.
    Ответ написан
    Комментировать
  • Как вводить в интерфейсе mysql русские символы?

    rqdkmndh
    @rqdkmndh
    Web-разработчик
    чтобы можно было вводить русские буквы в консоли mysql, нужно чтобы команда locale в системе выдавала:
    LANG=ru_RU.UTF-8
    LANGUAGE=
    LC_CTYPE="ru_RU.UTF-8"
    LC_NUMERIC="ru_RU.UTF-8"
    LC_TIME="ru_RU.UTF-8"
    LC_COLLATE="ru_RU.UTF-8"
    LC_MONETARY="ru_RU.UTF-8"
    LC_MESSAGES="ru_RU.UTF-8"
    LC_PAPER="ru_RU.UTF-8"
    LC_NAME="ru_RU.UTF-8"
    LC_ADDRESS="ru_RU.UTF-8"
    LC_TELEPHONE="ru_RU.UTF-8"
    LC_MEASUREMENT="ru_RU.UTF-8"
    LC_IDENTIFICATION="ru_RU.UTF-8"
    LC_ALL=

    а в докере выдает локали POSIX
    Поэтому либо ищите образ собранный на основе нужной локали, либо доустанавливайте сами нужные инструменты для генерации локали (locale-gen отсутствует)
    Ответ написан
    Комментировать