не может запустить nginx в альпийском Linux (докер)

2808
paul23

Ну, я установил контейнер для докера 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 по умолчанию на страницу, которую я также скопировал в докер), возникает та же ошибка.

2

3 ответа на вопрос

1
ewatt

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

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

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

RUN mkdir -p /run/nginx 

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

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

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

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

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

$ docker pull nginx:alpine 

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

$ docker build -t nginx-alpine 
1
Milen John Thomas

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

pid /run/nginx.pid;

Не могли бы вы подробнее остановиться на этом? Toto 5 лет назад 0
Я отредактировал мой ответ выше. Есть изменение в пути. Milen John Thomas 5 лет назад 0