Docker auf ARM Mac und mount/bind von volumes

wegus

wegus

MU Team
Thread Starter
Dabei seit
13.09.2004
Beiträge
19.698
Reaktionspunkte
7.551
Kennt sich hier jemand genauer mit dem Thema aus?

Ich habe mir eines der dockware templates für shopware gezogen und auf einen mount/bind des source Verzeichnisses für die IDE gehofft. Das klappt aber überhaupt nicht.
Es handelt sich um einen Mac mit M1, Ventura und neuestem Docker for Desktop. Hier ist mal eine mögliche config Datei:

Code:
version: "3"

services:

    shopware:
      # use either tag "latest" or any other version like "6.1.5", ...
      image: dockware/dev:latest
      container_name: shopware
      ports:
         - "80:80"
         - "3306:3306"
         - "22:22"
         - "8888:8888"
         - "9999:9999"
      volumes:
         - "db_volume:/var/lib/mysql"
         - "shop_volume:/var/www/html"

      networks:
         - web
      environment:
         # default = 0, recommended to be OFF for frontend devs
         - XDEBUG_ENABLED=1
         # default = latest PHP, optional = specific version
         - PHP_VERSION=7.4

volumes:
  db_volume:
    driver: local
  shop_volume:
    driver: local

networks:
  web:
    external: false


Das funktioniert so weit, nur sind dann die sourcen eben in einem docker volume und nicht im FS des Mac gemeounted (für PHPStorm).
Wenn ich nun das shop-Volume ändere auf "./shop_volume:/var/www/html", dann sollte alles in dem lokalen Verzeichnis ./shop_volume liegen und nicht nur in einem docker volume. Absurderweise ist dann aber das Verzeichnis leer und vor allem: das /var/www/html innerhalb desm Containers ist dann auch leer. Nehme ich ./ wieder weg, ist das Verzeichnis im container norimal gefüllt und ich kann composer/install bin/console,... einfach aufrufen.

Ich habe sowohl Virtio als auch legacy mode probiert. Das hat auch keinen Einfluß. Jemand eine Idee für mich?

P.S.: aburderweise klappt es mit dem MySQL Volume. Das kann ich lokal gemounted machen durch ein voransetzen des "./"

Google liefert nur sinnloses Zeugs. Hat da jemand einen Ansatz/Eine Idee?
 
Wenn ich den absoluten Pfad docker-compose.yml schreibe, geht es jedenfalls bei mir auf einem M2 Mac.
YAML:
      volumes:
         - "/srv/shopware/db_volume:/var/lib/mysql"
         - "/srv/shopware/shop_volume:/var/www/html"

1678466892649.png
 
  • Gefällt mir
Reaktionen: ruerueka und dg2rbf
Danke! Das hatte ich auch probiert. Leider ohne Erfolg.
 
Hey Moment, Deine Pfade liegen in /tmp, meine lagen unter /User (und das ist für docker frei gegeben bei mir).

Werde das auch mal mit /tmp testen. Nicht das es am Schutz des User Verzeichnisses liegt….

Aber ich vermute es liegt am shopware image, denn das html Verzeichnis sollte voll sein mit den shopware sourcen.
 
Aber ich vermute es liegt am shopware image, denn das html Verzeichnis sollte voll sein mit den shopware sourcen.
Naja, du hast ja in der compose.yml stehen, dass dein lokales Verzeichnis anstatt das von shopware verwendet werden soll.
Wenn in deinem "shop_volume" nichts drin ist, ist auch im laufenden container nichts drin.
 
  • Gefällt mir
Reaktionen: dg2rbf und genexx
@ElectricWizard das ist die empfohlene Vorgehensweise von dockware und es soll angeblich das Verzeichnis beim builden gefüllt werden. Mit reinem Docker Volume klappt das auch. Laut Doku soll es dann eben genau so mit mount/bind gehen!

Das es das nicht tut ist genau mein Problem.
Aber mich mache jetzt erstmal ohne mount nur mit docker volune und sftp weiter.

Nicht schön aber geht.
 
Ich habe es mit Ubuntu getestet und da verhält es sich ganz genau so! /var/www/html wird nur mit Dateien gefüllt, wenn man eben keinen mount/bind macht!
Das Image verhält sich also anders als dokumentiert - Image und Doku sind aber auch schon 2 Jahre alt! Also Haken hinter die Frage von mir. Ist keine Besonderheit dees M1 oder von Docker for Mac.
 
Hallo,

Ich habe Dockware bei mir wie folgt zum Laufen gebracht (unter macOS 13.2.1 auf einem MacBook Pro M1 Pro):

1.) Download eines docker-compose.yml - Template siehe hier: https://docs.dockware.io/development/start-developing
2.) Start von Docker mit docker-compose up -d
3.) Kopieren der Sourcen in ein lokales Verzeichnis auf dem Hostsystem:

Code:
mkdir -p ./src
docker cp shopware:/var/www/html/. ./src

4.) Stoppen von von Docker mit docker-compose down
5.) Hinzufügen des Volumes via Bind Mount in die docker-compose.yml:
Code:
...
volumes:
    - "./src:/var/www/html/"
6.) Start von Docker mit docker-compose up -d

Schritte 1-5 müssen natürlich nur einmalig gemacht werden. Beim erneuten Starten reicht Schritt 6.

Hoffe ich konnte dir helfen ;-)

Viele Grüße
Robin
 
  • Gefällt mir
Reaktionen: wegus
Super, freut mich dass ich dir helfen konnte @wegus
 
  • Gefällt mir
Reaktionen: wegus
Zurück
Oben Unten