Portainer

  • Nachdem ich mich nun schon seit einigen Tagen mit Docker bzw. Portainer beschäftige, gefällt mir das System ganz gut. Ich würde aber ungerne fertige Stacks aufsetzeb und stattdessen lieber einzelne Container verlinken.

    Leider scheitere ich gerade bei nginx+php-fpm.


    Also nginx:latest läuft ohne Probleme, und auch webdir und configs sind lokal gebinded zugänglich. php:fpm läuft, aber irgendwie hapert es an der Verbindung, bekomme nur nen "file not found"


    nginx container binds:

    /etc/nginx --> /opt/nginx/conf

    /usr/share/nginx/html --> /opt/nginx/www



    - docker image: php:fpm

    - containername: php

    - eigens netzwerk (php) mit nginx und php container

    - php config lokal per volume zugänglich: /usr/local/etc --> lokal/volume


    beim workdir bin ich mir nicht sicher, hab hier folgende setting:

    workdir: /var/www/html --> zusätzlich auf dem lokalen system gebindet in /opt/php/work (auch mit /opt/nginx/www funktioniert es nicht)


    nginx.conf sieht ungefähr so aus




    Vielleicht weiß ja wer von euch direkt wo der Fehler ist. Denn er versucht es ja ...

    nginx: xx.xx.xx.xx - - [02/Mar/2023:13:19:48 +0000] "GET /info.php HTTP/1.1" 404 27 "-" ....

    php: 172.18.0.3 - 02/Mar/2023:13:19:04 +0000 "GET /info.php" 404

    Meine Produkte: definitiv zu viele, RS, VPS, Domains, Webhosting, ...

    Edited once, last by geekmonkey ().

  • "/usr/share/nginx/html" hast du zu "/opt/nginx/www" gebunden, weiter unten geht es mit "/var/www/html" weiter.


    Da würde ich entweder das Binding auf /var/www/html zu /opt/nginx/www anpassen oder checken, was nginx als root nutzt (in der "server"-Direktiven)

    EiWoMiSau | VPS Eierpower 1 Ostern 2019 | VPS Karneval 2020 | ARM 1000 G11 Beta

  • "/usr/share/nginx/html" hast du zu "/opt/nginx/www" gebunden, weiter unten geht es mit "/var/www/html" weiter.


    Da würde ich entweder das Binding auf /var/www/html zu /opt/nginx/www anpassen oder checken, was nginx als root nutzt (in der "server"-Direktiven)

    /var/www/html ist das workdir was ich beim php container angegeben habe - was am ende noch mal auf /opt/nginx/www gebinded ist.


    Bildschirm­foto 2023-03-02 um 14.46.21.png


    Bildschirm­foto 2023-03-02 um 14.49.56.png



    Und hier noch mal nginx:


    Bildschirm­foto 2023-03-02 um 14.51.32.png

    Meine Produkte: definitiv zu viele, RS, VPS, Domains, Webhosting, ...

    Edited 4 times, last by geekmonkey ().

  • Der nginx Container meldet dem PHP Container: lies bitte Datei /usr/share/nginx/html/info.php

    Das Verzeichnis /usr/share/nginx gibt es im PHP Container allerdings nicht: deswegen Fehler 404


    Dein Folder /opt/nginx/www musst du im PHP Container unter dem gleichen Pfad einbinden, wie auch bei nginx, oder ein Rewrite durchführen z.B. mit der Direktive: fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

  • Der nginx Container meldet dem PHP Container: lies bitte Datei /usr/share/nginx/html/info.php

    Das Verzeichnis /usr/share/nginx gibt es im PHP Container allerdings nicht: deswegen Fehler 404


    Dein Folder /opt/nginx/www musst du im PHP Container unter dem gleichen Pfad einbinden, wie auch bei nginx, oder ein Rewrite durchführen z.B. mit der Direktive: fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    Besten Dank! Macht natürlich Sinn, wobei er das file quasi immer noch nicht findet.
    Aber wenn ich lokal im container bin ... ist es da:


    root@php:~# cd /usr/share/nginx/html && ls

    50x.html hindex.html index.html info.php test.html


    ich verstehe es einfach nicht :(


    Edit: ein einfaches php info.php reicht auch zum interpretieren aus ... irgendwo klemmt es

    Meine Produkte: definitiv zu viele, RS, VPS, Domains, Webhosting, ...

    Edited once, last by geekmonkey ().

  • Du solltest Dir als feinen Reverse Proxy für Docker Umgebungen auch mal Nginx Proxy Manager und Traefik, The Cloud Native Application Proxy | Traefik Labs ansehen. NPM ist imho leichter zu verstehen, während Traefik dahingehend vorteilhaft ist, dass man das Proxysetup schon mit in das docker-compose File schreiben kann und Traefik dann automatisch alles auf Basis der Tags umsetzt. Beides ist imho komfortabler als ein reiner Nginx.

    Beide kümmern sich automatisch um Let's Encrypt SSL Zertifikate.


    Linken hat seine Vorteile, separieren jedoch auch. Denn wenn Du in einem Stack alles beisammen hast, was eine Anwendung ausmacht, dann gibt es auch keine Abhängigkeiten. Wenn Du z.B. nur eine Datenbank für alle Anwendungscontainer hast, werden alle in Mitleidenschaft gezogen, wenn Du den DB Container wegen einer Anwendung rekonfigurieren oder neu starten musst. Theoretisch könnte man beim Hack einer Anwendung auch über die Datenbank andere Container beschädigen. Ist die DB separiert und im Stack mit der Anwendung, startest Du nur neu, was zusammengehört und alles andere läuft unbeeinflusst weiter. Auch kannst Du so unterschiedliche DB Versionen realisieren, wenn das die Anwendungen erfordern. Was machst Du, wenn eine Anwendung eine neuere DB Version erfordert und die andere eine ältere? Zusammen problematisch, getrennt kein Problem.

    RS Ostern L OST22 (~RS "3000" G9.5) (8C,24GB,960GB) | RS Cyber Quack (1C,2GB,40GB)

    Edited 3 times, last by TBT ().

    Like 1
  • Besten Dank TBT - wollte mir nur zunächst mal angucken wie ich das ganze manuell verlinken kann. Ziel sind am Ende schon komplette Stacks für die einzelnen Bereiche.


    Daher wurmt es mich ja gerade, warum es nicht funktioniert 😅


    Traefik und NPM stehen schon auf der Liste der todos danach. Wobei ich seit Jahren dafür einzig und allein einen vps 200 benutzte, der macht nix anderes als per acme.sh Zertifikate zu requesten und an alle Server und NAS zu verteilen - Never Change a Running system 😂😂

    Meine Produkte: definitiv zu viele, RS, VPS, Domains, Webhosting, ...

    Like 1