Die eigentliche Docker-Struktur liegt nicht in jedem Projekt vollständig herum, sondern zentral auf dem Rechner.
Beispiel:
~/.a77/
├── docker-temp/
│ ├── vision
│ ├── wordpress
│ ├── laravel
│ ├── prestashop
│ └── react
└── bin/
└── a77Ein zusätzlicher `src/`-Ordner pro Projekt soll möglichst vermieden werden.
Grund:
Wenn viele Projekte in VS Code geöffnet werden, sieht man sonst sehr viele gleichnamige `src`-Ordner. Das ist unübersichtlich.
Stattdessen ist das Projekt selbst der Code-Ordner.
Beispiel für eine Projektstruktur unter “~/home/USER/Documents/projects/”
thuele/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
├── resources/
├── routes/
├── storage/
├── vendor/
├── artisan
├── composer.json
├── package.json
├── .env.example
├── .env # normale .env + Sensible Daten mit 'A77_' prefix
├── a77.project.json # Projektdatei
└── README.mdJedes Projekt bekommt eine eigene Konfigurationsdatei, zum Beispiel:
{
"name": "thuele",
"type": "prestashop",
"php": "8.3",
"node": "20",
"database": "mariadb:10.11",
"localDomain": "thuele.localhost",
"useCustomDockerfile": false
}Ein Mitarbeiter soll ein Projekt möglichst einfach starten können.
Beispiel:
a77 start thuele
cd thuele
a77 startDas interne a77-Tool liest dann:
a77.project.json
.envund startet automatisch die passende Docker-Umgebung.
Beispiel intern:
docker compose \
--env-file .env \
-f ~/.a77/docker/compose/docker-compose.prestashop.yml \
up -dDer Mitarbeiter muss diesen Befehl aber nicht kennen.
Die Bedienung soll stark vereinfacht werden.
Mögliche Befehle:
a77 start
a77 stop
a77 restart
a77 logs
a77 shell
a77 db:import
a77 db:export
a77 db:pull staging
a77 files:pull stagingZiel:
Der Mitarbeiter arbeitet mit a77, nicht direkt mit komplexen Docker-Befehlen.