2017-06-15 2 views
0

Ich versuche, eine LEMP-Dev-Umgebung mit Andockfenster zu konfigurieren und habe Probleme mit nginx, weil ich nicht scheinen kann, nginx neu zu starten, sobald es seine neue Konfiguration hat.Docker - nginx mit benutzerdefinierter Konfig

docker-compose.yml:

version: '3' 
services: 
    nginx: 
    image: nginx 
    ports: 
     - '8080:80' 
    volumes: 
     - ./nginx/log:/var/log/nginx 
     - ./nginx/config/default:/etc/nginx/sites-available/default 
     - ../wordpress:/var/www/wordpress 
    php: 
    image: php:fpm 
    ports: 
     - 9000:9000 
    mysql: 
    image: mysql 
    ports: 
     - "3306:3306" 
    environment: 
     MYSQL_ROOT_PASSWORD: secret 
    volumes: 
     - ./mysql/data:/var/lib/mysql 

Ich habe einen benutzerdefinierten nginx Config, die /etc/nginx/sites-available/default, und in einer normalen Ubuntu-Umgebung ersetzt, würde ich service nginx restart in der neuen Konfiguration zu ziehen laufen.

Wenn ich jedoch versuche, dass diese Docker-Umgebung, die nginx Container exits with code 1.

docker-compose exec nginx sh 
service nginx restart 

-exit with code 1- 

Wie würde ich in der Lage verwendet nginx mit einer benutzerdefinierten /etc/nginx/sites-available/default Datei sein?

Antwort

1

Docker-Container sollten eine einzelne Anwendung im Vordergrund ausführen. Wenn dieser Prozess als PID 1 im Container gestartet wird, wird der Container ebenfalls geschlossen (ähnlich wie das Beenden von PID 1 auf einem Linux-Server den Computer herunterfährt). Dieser Prozess wird nicht vom OS-Dienstbefehl verwaltet.

Die normale Methode zum Neuladen einer Konfiguration in einem Container besteht darin, den Container neu zu starten. Da Sie docker-compose verwenden, wäre das docker-compose restart nginx. Wenn diese Konfiguration Teil Ihres Images ist, müssen Sie einen neuen Container neu erstellen und erneut bereitstellen. Da Sie jedoch ein Volume verwenden, ist dies nicht erforderlich.

+0

Ich habe versucht, 'docker-compose restart nginx' zu verwenden und den Container neu gestartet, aber meine beabsichtigte Konfiguration wurde nicht übernommen. Das liegt daran, dass der Konfigurationspfad in diesem Fall' /etc/nginx/conf.d ist/default.conf' anstelle von '/ etc/nginx/sites-available/default'. Wenn Sie jedoch das Volume mounten: '- ./nginx/config:/etc/nginx/conf.d', wird der nginx-Container sofort nach dem Start beendet. Egal, Sie haben meine ursprüngliche Frage beantwortet. Wenn Sie einen Rat haben, wie Sie herausfinden können, warum ein Container sofort auslief, würde ich mich freuen, ihn zu hören. –