knuspermagier.de
Der privateste Blog von Philipp.

Konpasu - Dev Log #3 - Synchronisierung!

Wie beim letzten Mal erwähnt ging es in der nächsten Session erstmal darum, alles auf den aktuellen Stand zu bringen.

Nach den ersten Zwei oder Drei Projekten, die ich Anfang des Jahres mit Laravel und Livewire neu aufbaute, fing ich an ein paar überall benutzte Komponenten in eine eigene Library zu extrahieren. Außerdem wollte ich dafür sorgen, dass ich in alle Projekten schnell reinspringen kann um ein Feature einzubauen, oder etwas zu fixen, daher war mir wichtig, dass sie alle auf einer möglichst gleichen Basis aufsetzen.

Ich legte mir dafür ein Excel-Sheet an, nannte es “Side Project Angleichung” und schrieb diverse Sachen hinein, um sicher gehen zu können das alles in jedem Projekt so ist, wie ich es mir vorstelle.

excel.png
Stand vorher

Zu den Sachen gehören zum Beispiel:

Außerdem fing ich mit der Zeit an, immer neue Zeilen einzufügen, wenn ich in einem Projekt eine Änderung machte, die ich in allen anderen nachziehen wollte. Zum Beispiel als ich diverse Komponenten und Controller in meine PwaBlui-Library extrahiert hatte, oder auch als mir auffiel, wie man Docker-Images kleiner bekommt.

Mit der Tabelle fällt es mir relativ leicht, sicherzustellen, dass alles passt. Und wie man am Screenshot oben sah, war bei konpasu, bis auf die Laravel-Version noch keine Spalte ausgefüllt. Typisch, für eines der ersten Projekte, die nur kurz angefangen und dann weggelegt wurden.

Ich begann nun also meine Arbeit erstmal mit der Docker-File und ein paar anderen Low-Hanging Fruits.

Die Dockerfile sieht mittlerweile so aus:

FROM alpine AS scratchpad
WORKDIR /app
COPY --chown=www-data:www-data --chmod=g+r . /app
RUN rm -rf vendor

FROM r.knspr.space/php-fpm

WORKDIR /app

COPY .docker/nginx.conf /etc/nginx/nginx.conf
COPY .docker/php.ini /usr/local/etc/php/conf.d/zzz-custom.ini
COPY .docker/entrypoint.sh /etc/entrypoint.sh

RUN chmod -R 777 /var/lib/nginx

COPY --chown=www-data:www-data --chmod=g+r vendor /app/vendor
COPY --chown=www-data:www-data --from=scratchpad /app /app

COPY .env.docker /app/.env

RUN mkdir /app/bootstrap/cache && mkdir /app/storage &&  \
    mkdir /app/storage/app && mkdir /app/storage/framework &&  \
    mkdir /app/storage/framework/cache && mkdir /app/storage/framework/sessions && \
    mkdir /app/storage/framework/views && mkdir /app/storage/logs && \
    touch /app/storage/database.sqlite && \
    php artisan storage:link -n && \
    chown -R www-data:www-data /app/storage && \
    chown -R www-data:www-data /app/bootstrap/cache

ENTRYPOINT ["sh", "/etc/entrypoint.sh"]

Mittlerweile bin ich von der einfachen Dockerfile, die auf php artisan serve basierte weg und doch zu einem Modell mit php-fpm. Am Ende hat es hier und da doch mal etwas genervt, dass der PHP-Interne Server nur Single-Threaded ist und so ein paar andere Eigenheiten besitzt, wie zum Beispiel, dass die artisan serve-Sache als Wrapper keine Enviroment-Variablen weitergibt, was mega nervig ist, weil man ja doch mal das ein oder andere so konfigurieren will.

Ich habe mich entschlossen, einen Container mit php-fpm und nginx zu bauen, auch wenn es etwas schmutzig ist, aber die Einfachheit gewinnt hier.

Der ganze Multi-Stage-Kram (mit dem scratchpad) ist hauptsächlich, um den vendor-Ordner in einen eigenen Layer zu bekommen, damit bei einem neuen Image nicht immer alles neu hochgeladen werden muss. Im vendor-Ordner ändert sich ja meistens nichts, aber es sind oft 40-60 Megabyte. Mehr dazu gibt’s im oben verlinkten Artikel. Beziehungsweise, ich verlinke ihn einfach nochmal, was soll der Geiz.

Abgesehen davon kümmerte ich mich erstmal um Pint, PhpStan und den ganzen anderen Kram und kann nun erfolgreich verkünden, dass konpasu allen Standards entspricht, juchu!

Fehler in der Signifikanz

olpe.png

Beim stichprobenartigen Durchgehen der importierten Tage fiel mir auf, dass mein Algorithmus teilweise nicht so gut arbeitet. Die Route im Screenshot sah vor der Feststellung der signifikaten Punkte jedenfalls besser aus als nachher, da muss ich nochmal ran! Wäre ja auch nur zu einfach gewesen! Dem werde ich mich wohl die nächsten Tage nochmal widmen.

Kommentare, Feedback und andere Anmerkungen?
Schreib mir eine E-Mail 🤓