Nginx kann nicht in alpiner Linux (Docker) ausgeführt werden

2717
paul23

Nun, ich habe einen Docker-Container für alpine Linux mit nginx darauf eingerichtet

( apk add nginx)

Jetzt versuche ich, Nginx auszuführen. Mit dem einfachen Befehl nginxDies gibt den folgenden Fehler zurück:

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

Was verursacht das? - Selbst als root habe ich keine Erlaubnis zum Öffnen, /run/also kann ich die Dinge nicht wirklich überprüfen. Meine nginx.conf ist:

#
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/*; } 

Sicherlich ist kein Server enthalten, aber ich erwarte, dass er laufen kann und niemals irgendetwas bedient. - Aber selbst wenn ich die Aufnahme aktiviere (was auf die Standard-HTML-Seite umleitet, die ich auch in das Docker kopiert habe), tritt der gleiche Fehler auf.

2

3 Antworten auf die Frage

1
ewatt

Das /run/nginxVerzeichnis ist auf den neuesten Alpincontainern nicht vorhanden.

Sie können entweder das Verzeichnis erstellen oder den Speicherort der PID-Datei ändern.

Erstellen Sie das Verzeichnis in Ihrer Docker-Datei:

RUN mkdir -p /run/nginx 

Oder ändern Sie den Ort der PID-Datei:

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

Es ist nicht wirklich notwendig, einen eigenen Nginx-Docker-Container aus dem Alpine-Base-Image zu erstellen, wenn sich ein offizielles Alpine-Nginx-Docker-Image auf dem Docker Hub befindet.

Hier ist ein Dockerfile von Nginx Upstream Docker Image.

Um es direkt aus dem Docker-Hub zu ziehen, verwenden Sie:

$ docker pull nginx:alpine 

Sie können die Docker-Datei mit Ihren benutzerdefinierten Variablen ändern und ein eigenes Bild erstellen.

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

Alpine Linux hat nicht run / nginx / nginx.pid. Fügen Sie dies der obersten nginx.conf-Datei hinzu.

pid /run/nginx.pid;

Können Sie das etwas näher erläutern? Toto vor 6 Jahren 0
Ich habe meine Antwort oben bearbeitet. Es gibt eine Änderung im Pfad. Milen John Thomas vor 6 Jahren 0