MongoDB

MongoDb und DDEV

Du hast ein prähistorisch Projekt mit PHP 7.3 und es wird hirnrissigerweise MongoDB in einer ebenso alten Version benutzt? Und das Ganze soll nicht geupdated werden aber unter DDEV laufen?

Nichts einfacher als das:

❯ cat .ddev/config.yaml
[...]
webimage_extra_packages: [php7.3-mongodb]
[...]

Und nun möchtest Du einen MongoDB Dump einspielen, den Du zuvor mit mongodump erstellt hast? Fast genauso einfach. Im web Container gibt es natürlich keine mongodb-tools. Aber im mongo Container gibt es die natürlich. Also ein kleiner Umweg:

Das Verzeichnis mit dem Dump (bspw. ~/Sites/data) in den Mongo Container mounten:

❯ cat .ddev/docker-compose.mountdata.yaml
services:
  mongo:
    volumes:
    - type: "bind"
      source: "~/Sites/data"
      target: "/data"

/data ist der Pfad des gemounteten Verzeichnis im Container.


DDEV neu starten und mit SSH auf dem Mongo Container einloggen:

❯ ddev restart 
❯ ddev ssh --service=mongo

Die DB im Container importieren.

# cd data
# ls -l
drwxr-xr-x 1 root    root          320 Mar 28 15:26 dump
# mongorestore -u db -p db  --db db --authenticationDatabase admin -d db dump 

DSN in der .env etwa so:

❯ cat .env.local
[..]
MONGODB_URL=mongodb://db:db@mongo:27017
MONGODB_DB=db
[..]