Wie starte ich Nginx mit einer benutzerdefinierten Konfiguration in Docker?

1

In der Nginx-Konfiguration ist eine daemon off;Direktive festgelegt /root/nginx.conf.

Ich versuche es unter Docker mit diesem Befehl auszuführen:

sudo docker run --name nginx-redirect -p 3128:3128 -v /root/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx

aber es passiert nichts (außer Docker-Ausgabe der Container-ID; ich denke, es sollte bedeuten, dass alles in Ordnung ist), und es netstat -tulpnwird kein docker/nginxContainer und kein 3128Port angezeigt, wo ich mich irre?

/root/nginx.conf:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
daemon off;

events {
  worker_connections 768;
}

http {
  server {
    listen 3128;
    location / {
      proxy_pass http://example.com;
    }
  }
}
gr4k
quelle

Antworten:

1

Der Nginx-Container wird standardmäßig mit ausgeführt, daemon off;und Sie können dies in der Docker-Datei überprüfen

FROM debian:jessie

MAINTAINER NGINX Docker Maintainers "[email protected]"

ENV NGINX_VERSION 1.10.2-1~jessie

RUN apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62 \
    && echo "deb http://nginx.org/packages/debian/ jessie nginx" >> /etc/apt/sources.list \
    && apt-get update \
    && apt-get install --no-install-recommends --no-install-suggests -y \
                        ca-certificates \
                        nginx=${NGINX_VERSION} \
                        nginx-module-xslt \
                        nginx-module-geoip \
                        nginx-module-image-filter \
                        nginx-module-perl \
                        nginx-module-njs \
                        gettext-base \
    && rm -rf /var/lib/apt/lists/*

# forward request and error logs to docker log collector
RUN ln -sf /dev/stdout /var/log/nginx/access.log \
    && ln -sf /dev/stderr /var/log/nginx/error.log

EXPOSE 80 443

CMD ["nginx", "-g", "daemon off;"]

Nginx Dockerfile

Sie müssen also die Daemon-Direktive aus Ihrer Nginx-Datei entfernen, den Container ausführen und es sollte funktionieren.

kn330
quelle