Ankündigung

Einklappen
Keine Ankündigung bisher.

Docker nginx ssl funktioniert nicht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Docker nginx ssl funktioniert nicht

    Hallo,

    Ich habe mein Anliegen irrtümlich ins falsche Unterforum gepostet. Also kein Duplikat, ich kann nur nicht den Beitrag verschieben...

    Ich arbeite mich in Docker ein, versuche mit nginx als Webserver eine ssl-Verbindung einzurichten.

    Http funktioniert, https scheitert.

    docker-compose.yml
    Code:
    version: "3.7"
    services:
      app:
        build:
          context: ./
          dockerfile: app.dockerfile
        working_dir: /var/www
        volumes:
          - ./../laravel:/var/www
        environment:
          - DB_HOST=database
        depends_on:
          - database
        container_name: laravel-app
      web:
        image: nginx:latest
        working_dir: /var/www
        volumes:
          - ./../laravel:/var/www
          - ./vhost.conf:/etc/nginx/conf.d/default.conf
          - ./../ssl_zertificate:/etc/nginx/certs
        ports:
          - "80:80"
          - "443:443"
        depends_on:
          - app
        container_name: nginx-server
      database:
        image: mysql:5.7
        volumes:
          - ./db:/var/lib/mysql
        environment:
          - "MYSQL_ALLOW_EMPTY_PASSWORD=yes"
          - "MYSQL_DATABASE=DockerLaravelTutDev"
          - "MYSQL_USER=root"
          - "MYSQL_PASSWORD=xxx"
          - "MYSQL_ROOT_PASSWORD=xxx"
        ports:
          - "33061:3306"
        container_name: mysql
    vhost.conf
    Code:
    server {
        listen 443 ssl;
        server_name docker-laravel-tut.local;
        index index.php index.html;
        root /var/www/public;
        ssl_certificate /etc/nginx/certs/myRoot.cert;
        ssl_certificate_key /etc/nginx/certs/myRoot.key;
    
        location / {
            try_files $uri /index.php?$args;
        }
    
        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            fastcgi_pass app:9000;
            fastcgi_index index.php;
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
        }
    }
    Meine Fragen:

    1. Warum kann ich nicht zugreifen auf
    Code:
    https://***
    2. Wie kann ich im laufenden Container die Ordner und Dateien sehen, also wie
    Code:
    ls -a /etc/nginx/certs

  • #2
    Ok, ich habe etwas das building etwas verändert...

    docker-composer.yml
    Code:
    version: "3.7"
    services:
      app:
        build:
          context: ./
          dockerfile: app.dockerfile
        working_dir: /var/www
        volumes:
          - ./../laravel:/var/www
        container_name: laravel-app
      web:
        build:
          context: ./
          dockerfile: nginx.dockerfile
        working_dir: /var/www
        volumes:
          - ../laravel:/var/www
        ports:
          - "80:80"
          - "443:443"
        depends_on:
          - app
        container_name: nginx-server
    nginx wird nun erst über nginx.dockerfile gebaut, die schaut folgendermaßen aus:
    nginx.dockerfile
    Code:
    FROM nginx
    RUN mkdir /etc/nginx/certs
    ADD ./myRoot.crt /etc/nginx/certs/myRoot.crt
    ADD ./myRoot.key /etc/nginx/certs/myRoot.key
    ADD ./vhost.conf /etc/nginx/conf.d/vhost.conf
    Also:
    - es wird ein Verzeichnis erstellt (/etc/nginx/certs)
    - in dieses Verzeichnis wierden die lokalen myRoot.* Dateien kopiert

    Laut Konsole klappt das auch alles, aber der Fehler bleibt.
    docker-compose up --build
    Code:
    rammi@rammi22 MINGW64 /g/PROJECTS/DOCKER/webserver/nginx/docker-conf
    $ docker-compose up --build
    Building app
    Step 1/3 : FROM php:7.3-fpm
     ---> d5e1f9f84353
    Step 2/3 : RUN apt-get update     && apt-get install -y libzip-dev git mariadb-client libmagickwand-dev --no-install-recommends
     ---> Using cache
     ---> d85ff6286b81
    Step 3/3 : RUN docker-php-ext-install pdo_mysql zip     && pecl install imagick     && docker-php-ext-enable imagick     && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"     && php composer-setup.php     && php -r "unlink('composer-setup.php');"     && mv composer.phar /usr/local/bin/composer
     ---> Using cache
     ---> b94b331c713d
    
    Successfully built b94b331c713d
    Successfully tagged docker-conf_app:latest
    Building web
    Step 1/5 : FROM nginx
     ---> 231d40e811cd
    Step 2/5 : RUN mkdir /etc/nginx/certs
     ---> Using cache
     ---> 7fbe3c516374
    Step 3/5 : ADD ./myRoot.crt /etc/nginx/certs/myRoot.crt
     ---> d8c0a38c75df
    Step 4/5 : ADD ./myRoot.key /etc/nginx/certs/myRoot.key
     ---> 167ec8250ae6
    Step 5/5 : ADD ./vhost.conf /etc/nginx/conf.d/vhost.conf
     ---> 293d0de4bd80
    
    Successfully built 293d0de4bd80
    Successfully tagged docker-conf_web:latest
    Starting laravel-app ... done
    Recreating nginx-server ... done
    Attaching to laravel-app, nginx-server
    laravel-app | [15-Dec-2019 19:44:03] NOTICE: fpm is running, pid 1
    laravel-app | [15-Dec-2019 19:44:03] NOTICE: ready to handle connections
    nginx-server | 2019/12/15 19:44:05 [emerg] 1#1: cannot load certificate "/etc/nginx/certs/myRoot.cert": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/nginx/certs/myRoot.cert','r') error:2006D080:BIO routines:BIO_new_file:no such file)
    nginx-server | nginx: [emerg] cannot load certificate "/etc/nginx/certs/myRoot.cert": BIO_new_file() failed (SSL: error:02001002:system library:fopen:No such file or directory:fopen('/etc/nginx/certs/myRoot.cert','r') error:2006D080:BIO routines:BIO_new_file:no such file)
    nginx-server exited with code 1
    Was mach ich falsch?

    Es gibt leider kein deutschsprachiges Docker-Forum, aber ich denke, hier gibt es auch kompetente Mitstreiter die mir da helfen können.

    Kommentar


    • #3
      Ok, nach stundenlangen Suchen hab ich nun den Fehler gefunden:

      Code:
      ...cannot load certificate "/etc/nginx/certs/myRoot.cert...
      Die Datei ***.cert heißt ***.crt

      Zur Frage 2 (Wie kann ich im laufenden Container...):
      - mit docker ps die Container-ID suchen
      - mit docker exec -it <Container-ID> bash kommt man dann rein

      Code:
      ...
      rammi@rammi22 MINGW64 /g/PROJECTS/DOCKER
      $ docker ps
      CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
      fd1e36f157ac        docker-conf_web     "nginx -g 'daemon of…"   6 seconds ago       Up 4 seconds        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx-serverbbd62556fb1e        docker-conf_app     "docker-php-entrypoi…"   3 minutes ago       Up 5 seconds        9000/tcp                                   laravel-app
      
      rammi@rammi22 MINGW64 /g/PROJECTS/DOCKER
      $ docker exec -it fd1e36f157ac bash
      root@fd1e36f157ac:/var/www# ls -a /etc/nginx/certs/
      ...

      Kommentar


      • #4
        Schön dass Du es gefixed hast und daß Du die Lösung geposted hast rammi

        Kommentar

        Lädt...
        X