1
votes

docker-compose up échoue pour le conteneur nginx

J'obtiens l'erreur suivante lorsque j'exécute docker-compose up:

version: '3'

services:

  backend:
    build: ./nginx
    depends_on:
    - db
    - redis
    working_dir: /var/www
    volumes:
      - ../../src:/var/www
    ports:
      - 80:80
...
...

Voici mon Dockerfile pour nginx:

fastcgi_cache_path /dev/shm levels=1:2 keys_zone=laravel:100m;
fastcgi_cache_key "$scheme$request_method$host$request_uri$query_string";

server {
   listen 80 default_server;

   root   /var/www/public;
   index  index.php index.html;

   client_max_body_size 5M;

 ...
 ...

default.conf:

FROM nginx

COPY nginx.conf /etc/nginx/conf.d/default.conf

docker-compose.yml:

backend_1_a5b5a2caf6fc | 2019/04/28 21:40:49 [emerg] 1#1: no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/conf.d/default.conf:4
backend_1_a5b5a2caf6fc | nginx: [emerg] no "ssl_certificate" is defined for the "listen ... ssl" directive in /etc/nginx/conf.d/default.conf:4
...
...
production_backend_1_a5b5a2caf6fc exited with code 1


1 commentaires

Partagez tout le fichier default.conf .


3 Réponses :


1
votes

Cela signifie que vous n'avez pas configuré correctement ssl (il vous manque un certificat de serveur). Puisque vous avez mappé le port 80 et non 443 dans votre docker-compose, je suppose que vous n'allez pas utiliser SSL.

Supprimez simplement la ligne suivante dans votre nginx.conf pour désactiver ssl:

listen 443 ssl http2;

assurez-vous de reconstruire et de redémarrer votre conteneur nginx.


3 commentaires

avez-vous reconstruit le conteneur? veuillez vérifier que votre configuration est en place. vous pouvez vider la configuration actuelle de nginx avec nginx -T (vous devez être dans le conteneur). y a-t-il un SSL?


Btw. L'erreur indique où se trouve la mauvaise configuration ssl. L'erreur montre-t-elle le même fichier / ligne qu'avant?


On dirait que la reconstruction à plusieurs reprises a résolu le problème. Merci. Je ne sais pas pourquoi la première reconstruction n'a pas fonctionné.



0
votes

Avez-vous un autre serveur en écoute sur le port 443.Essayez de supprimer tous les liens symboliques de / etc / nginx / sites-enabled sauf celui-ci que vous voulez faire fonctionner


0 commentaires

0
votes

Mais, si quelqu'un a besoin d'utiliser SSL, cette erreur signifie que votre section serveur ne contient pas les déclarations ssl_certificate et ssl_certificate_key . Vous devez avoir un fichier .crt et un .key pour fonctionner avec ssl.

Il devrait ressembler à

server {

  listen 80;
  listen 443 default_server ssl;

  ssl_certificate /etc/nginx/certs/default.crt;
  ssl_certificate_key /etc/nginx/certs/default.key;

  ... other declarations

}


0 commentaires