Ankündigung

Einklappen
Keine Ankündigung bisher.

Docker und Workflow

Einklappen

Neue Werbung 2019

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

  • Docker und Workflow

    Ich möchte etwas mehr von meinem bisherigen Workflow mit Dev-Server weg und etwas mehr zu Docker. Insbesondere das (halb-)automatisierte Ausführen von Tests gefällt mir sehr gut. Dazu habe ich mal versucht auf Basis eines bestehenden Dockerfiles (tutum/docker-lamp) ein eigenes aufzubauen:

    Code:
    FROM tutum/lamp:latest
    
    RUN apt-get -y install curl
    RUN rm -fr /app && git clone some-git-repo.git
    RUN curl -sS https://getcomposer.org/installer | php
    
    EXPOSE 80 3306
    CMD ["cd /app && composer install"]
    Ansatz ist gut, die Umsetzung gefällt mir noch nicht ganz. Ein paar Dinge stören mich, die ich allerdings noch nicht fähig bin zu umgehen, eventuell habt ihr mir hier einen kleinen Input/Link wo ich mich weiterbilden kann:

    - Die Installation der Software innerhalb Docker wird beim Starten nicht ausgeführt. Hier besteht wohl noch ein Denkfehler bei mir:
    Code:
    exec: "cd /app && composer install": stat cd /app && composer install: no such file or directory
    Scheinbar kann hier nur eine Datei aufgerufen werden? Muss ich diese also mit ADD im Dockerfile hinzufügen und dann aufrufen?

    - Wie soll ich am sinnvollsten Unit-Tests aufrufen darin? Ich muss sicher zu Beginn eine Datenbank initialisieren, befüllen etc. Danach die Tests aufrufen. Eine Auswertung sollte auch erfolgen. Habt ihr hier einen gängigen Workflow?

    Generell so oder so eine interessante Frage: Welche Workflows sind Best-Practive für (halb-)automatisierte Unit-Tests?

    Danke für jeglichen Input.
    [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

  • #2
    Zu deinem konkreten Problem: Wenn du die Array-Syntax für CMD benutzt, musst du den vollen Pfad zu Executables angeben. Wenn du die Array-Syntax einfach weglässt, also CMD cd /app && composer install sollte es funktionieren.

    If you want to run your <command> without a shell then you must express the command as a JSON array and give the full path to the executable.
    Schau mal in die Doku, die einzelnen Dockerfile-Commands sind da relativ ausführlich dokumentiert. https://docs.docker.com/reference/builder/#cmd

    Kommentar


    • #3
      Ok, soweit bin ich schon gekommen. Was jetzt irgendwie scheitert ist der Clone des git-Repo. Er kopiert mir immer nur mein Composer-File und mein /vendor-Ordner... Das macht mich noch verrückt...

      Ich ergänze noch etwas:
      - der Clone funktioniert ohne Probleme. Jedoch erscheinen nur die besagten Ordner und nicht das ganze Repo.
      - Ohne Docker rundherum funktioniert der Clone komplett (mit allen Ordnern)
      - Den Clone vor Docker zu machen und mittels COPY oder ADD die Dateien hinzuzufügen funktioniert auch nicht, gleiches Ergebnis.
      [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

      Kommentar

      Lädt...
      X