4

Ну, я установил контейнер для докера Alpine Linux с nginx на нем

(apk add nginx)

Сейчас я пытаюсь запустить nginx. С помощью простой команды nginx возвращается следующая ошибка:

nginx: [emerg] open() "/run/nginx/nginx.pid" failed (2: No such file or directory)

Чем это вызвано? - Даже с правами root у меня нет разрешения открывать /run/ поэтому я не могу проверить это. Мой nginx.conf это:

#
events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    #include /etc/nginx/mime.types;
    #default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;
    gzip_disable "msie6";

    ##
    # Virtual Host Configs
    ##

    #include /etc/nginx/conf.d/*.conf;
    #include /etc/nginx/sites-enabled/*;
}

Конечно, сервер не включен, но я ожидаю, что он сможет работать и просто никогда ничего не обслуживать. - Но даже если я включаю включение (которое перенаправляет на html по умолчанию на страницу, которую я также скопировал в докер), возникает та же ошибка.

3 ответа3

3

Каталог /run/nginx не существует в последних альпийских контейнерах.

Вы можете создать каталог или изменить местоположение файла PID.

Создайте каталог в вашем Dockerfile:

RUN mkdir -p /run/nginx

Или измените местоположение файла PID:

nginx -g 'pid /tmp/nginx.pid'
1

Нет реальной необходимости создавать свой собственный докер-контейнер nginx из базового образа Alpine, когда в Docker Hub есть официальный образ докера Alpine nginx.

Вот Dockerfile образа исходной док- станции nginx.

Чтобы вытащить его прямо из концентратора Docker, используйте:

$ docker pull nginx:alpine

Вы можете изменить его Dockerfile со своими пользовательскими переменными и создать свой собственный образ.

$ docker build -t nginx-alpine
1

В Alpine linux отсутствует файл /nginx /nginx.pid. Попробуйте добавить это в верхний файл nginx.conf.

pid /run/nginx.pid;

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .