Ga naar inhoud

Lokale ontwikkelomgeving

De lokale omgeving draait volledig via Docker Compose. Er is geen Vagrant meer actief; het README.md beschrijft nog de oude Vagrant-aanpak, maar die is vervangen door de Docker-setup in docker-compose.yml.

Vereisten

  • Docker Desktop (of vergelijkbare Docker-runtime)
  • Composer (of laat de container het bij eerste start automatisch installeren)
  • Een productie- of bèta-dump van atx_www (eenmalig, voor de golden volume)

Architectuur van de Docker-omgeving

docker-compose.yml definieert vier services:

Service Image Poort Doel
app docker/Dockerfile (PHP 8.2 + Apache) 80 Applicatieserver
db mariadb:10.11 3306 MariaDB, zelfde versie als productie (10.11.14-MariaDB)
memcached memcached:1.6-alpine 11211 Cachelaag
mailpit axllent/mailpit 1025 (SMTP), 8025 (Web UI) Mail-opvang voor lokale e-mails

De app-container monteert de volledige repo als volume en overschrijft _www/appconfig/environment_constants.php read-only met docker/environment_constants.docker.php (docker-compose.yml:11-12). Jouw lokale environment_constants.php blijft zo onaangetast.

Golden database

De zware productie-/bèta-snapshot wordt éénmalig geladen in een Docker-volume <project>_db_golden dat bewust buiten de normale db_data-lifecycle valt — docker compose down -v verwijdert het niet (docker-compose.yml:57-58).

Eenmalige import (van een .sql of .sql.gz-dump):

docker/db/import-golden.sh /pad/naar/atx_www.sql.gz

Dit start een tijdelijke MariaDB-container, importeert atx_www en seeded de nevenschema's (atx_3d, atx_dwh, atx_log, atx_queue) vanuit _data/. Zie docker/db/import-golden.sh.

Reset naar golden baseline (seconden, btrfs reflink zonder SQL-reimport):

docker/db/reset.sh

Snapshot maken van de huidige werkdatabase als nieuwe golden baseline:

docker/db/snapshot.sh

Starten

docker compose up

Bij het eerste opstarten installeert de entrypoint (docker/entrypoint.sh) automatisch Composer-dependencies als vendor/autoload.php nog ontbreekt. Vervolgens worden de benodigde runtime-mappen aangemaakt (tmp/, cache/, _www/tmp/, _static/uploads/, _shopupdating/exports/).

De database wordt bij een lege db_data-volume automatisch geseed via docker/db-init/01-seed.sh: atx_www (inclusief doctrine_migration_versions), de nevenschema's en alle referentietabellen (channel, cms_text, customer, customer_user, language, setting, vehicle_* enz.).

Hostnamen instellen

Voeg de volgende regels toe aan je /etc/hosts (of gebruik de browsertruc hieronder):

127.0.0.1 www.atraxion.localhost manage.atraxion.localhost
127.0.0.1 admin.atraxion.localhost api.atraxion.localhost
127.0.0.1 autodoc.atraxion.localhost shopupdating.atraxion.localhost
127.0.0.1 static.atraxion.localhost staticcore.atraxion.localhost

Alternatief voor Chromium: gebruik --host-resolver-rules="MAP *.atraxion.localhost 127.0.0.1" als startflag (handig om de shop te testen zonder je /etc/hosts aan te passen).

De Apache-virtualhosts (docker/apache/vhosts.conf) mappen:

Hostname DocumentRoot
www.atraxion.localhost _www/
manage.atraxion.localhost _www/
admin.atraxion.localhost _cp/
api.atraxion.localhost _api/
autodoc.atraxion.localhost _autodoc/
shopupdating.atraxion.localhost _shopupdating/
static.atraxion.localhost _static/
staticcore.atraxion.localhost _staticcore/

Inloggen

Er is geen standaard testgebruiker met een bekend wachtwoord voorzien. Om in te loggen op een klantaccount:

  1. Kies een klantnummer uit de golden database (bv. klantnr 5024240 heeft te-monteren-carts).
  2. Genereer een bcrypt-hash van een gewenst wachtwoord (bv. via password_hash('test', PASSWORD_BCRYPT)).
  3. Sla de hash op in customer_user.Pass voor het gewenste account.

Cache-warmup

Na het opstarten of na het toevoegen van cms_text-vertalingen via migraties:

./cli.php cache:warmup

of de alias:

./cli.php c:w

Zonder warmup renderen trans()-aanroepen leeg. Memcached herstarten volstaat niet. Zie ook Caching.

Migraties uitvoeren

./bin/doctrine m:m -n

Voertuigdata laden (DriveRight)

Na een verse import of reset:

cd _shopupdating/cronjobs/atx/vehicles/driveright && php updateDriveRight.php

Frontend-assets bouwen

Zie INSTALL.md voor de npm-stappen:

npm install
cd _static/assets && npm install && npm run build

Uitgaande e-mails

Mailpit onderschept alle SMTP-verkeer (poort 1025). Bekijk de gevangen mails via http://localhost:8025.