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

    Spoiler anzeigen

    location ~ \.php$ {

    fastcgi_pass php:9000;

    fastcgi_index index.php;

    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

    fastcgi_buffers 16 16k;

    fastcgi_buffer_size 32k;

    include fastcgi_params;

    }


    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, ...

    Einmal editiert, zuletzt von geekmonkey (2. März 2023 um 14:20)

  • "/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, ...

    4 Mal editiert, zuletzt von geekmonkey (2. März 2023 um 14:51)

  • 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, ...

    Einmal editiert, zuletzt von geekmonkey (2. März 2023 um 21:32)

  • 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 2000 G12 Pro BW25 (8C EPYC 9645, 16GB, 1TB) | RS 500 G12 BW25 (2C EPYC 9645, 4GB, 128GB) | RS Cyber Quack (1C,2GB,40GB)

    3 Mal editiert, zuletzt von TBT (2. März 2023 um 21:40)

  • 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, ...