Laradock als Laravel Entwicklungsumgebung
Mit Laradock einfach eine Laravel Entwicklungsumgebung starten
Docker Basics
Docker ermöglicht es, Services oder Applikationen per Befehl in einem sogenannten Container zu starten.Ein Container ist eine vom Betriebssystem (OS) unabhängige isolierte Umgebung:
Beim ersten Start eines Containers, lädt Docker selbstständig alle notwendigen Quellen
aus dem Internet.
Docker kann unter Windows, macOS oder einer Linux-Distribution installiert werden,
siehe auch: Docker
Download und initiales Setup
git clone https://github.com/Laradock/laradock.git
cp env-example .env
mkdir ../laradock_www
Sollten bestimmte Port bereits belegt sein, können diese einfach in der .env Datei geändert werden.
z.B.:
APP_CODE_PATH_HOST=../laradock_www...
### NGINX #################################################
NGINX_HOST_HTTP_PORT=90
NGINX_HOST_HTTPS_PORT=444...
### PHP MY ADMIN ##########################################
# Accepted values: mariadb - mysql
PMA_DB_ENGINE=mariadb
# Credentials/Port:
PMA_USER=defaultPMA_PASSWORD=secret
PMA_ROOT_PASSWORD=secret
PMA_PORT=8082
sudo docker-compose up -d nginx mariadb phpmyadmin redis workspace
Laravel download und anpassen
In den Container wechseln:
docker-compose exec workspace bash
Befehle im Container: Laravel downloaden und installieren
cd ..
composer create-project laravel/laravel www
cd www
chmod 777 -R ./storage
npm install npm
npm run dev
.env Datei im www-Ordner:
DB_CONNECTION=mysql
DB_HOST=mariadb
DB_PORT=3306
DB_DATABASE=default
DB_USERNAME=default
DB_PASSWORD=secret
BROADCAST_DRIVER=redis
CACHE_DRIVER=redis
QUEUE_CONNECTION=sync
SESSION_DRIVER=redis
SESSION_LIFETIME=120
REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379
dann wieder in der workspace bash
composer require predis/predisphp artisan migrate
Verschiedene Sites in nginx
in der nginx-Konfig können verschiedene Ordner und deren Test-URL angelegt werden, dabei habe ich für jede Testseite folgendes Konfigfile angelegt:
Ordner: laradock/nginx/sites/
server {
listen 80;
listen [::]:80;
# For https
# listen 443 ssl;
# listen [::]:443 ssl ipv6only=on;
# ssl_certificate /etc/nginx/ssl/default.crt;
# ssl_certificate_key /etc/nginx/ssl/default.key;
server_name DOMAINNAME.test;
root /var/www/FOLDER/public;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_pass php-upstream;
fastcgi_index index.php;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fixes timeouts
fastcgi_read_timeout 600;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
location /.well-known/acme-challenge/ {
root /var/www/letsencrypt/;
log_not_found off;
}
error_log /var/log/nginx/laravel_error.log;
access_log /var/log/nginx/laravel_access.log;
}
Domainname und Folder müssen an dieser Stelle natürlich angepasst werden.
PHP 7.3 - Version ändern
Die PHP-Version kann durch Anpassen der .env Datei geändert werden. Im Anschluss muss php-fpm neu erstellt werden:
docker-compose build php-fpm
Workspace.sh
#bin bash!
cd /docker/laradock && docker-compose exec workspace bash
ENVOY PATH
PATH=$PATH:~/.composer/vendor/bin

{{percentage}} % positiv

DANKE für deine Bewertung!
Top-Artikel in diesem Bereich
Ich betreibe eine handvoll Docker Container auf einem einzelnen Linux-Host. Docker-Container werden bei einem erneuten erstellen oder beim Austausch auf eine neuere Imageversion bekanntlich ausgetauscht und verlieren dabei alle geänderten Daten. Um bestimmte Ordner eines Containers permanent zu speichern, müssen diese über Volumes oder Bind-Mounts ausgelagert werden. Ich habe dazu meist bestimmte Pfade der Container in definierten Ordnern am Host verbunden (Bind-Mounts). Mit ein Grund für die Ve...
Ursprünglich habe ich Docker rein über die Kommandozeile verwaltet, was mit ein paar simplen Befehlen schon sehr einfach ist. Noch mehr Übersicht und eine komfortable Admin-Oberfläche liefert Portainer. Portainer selbst kann auch als Docker-Container gestartet werden und macht das Verwalten von Containern zum Kinderspiel.
Wie bereits mehrfach auf dieser Seite erwähnt, verwende ich für den Zugriff auf meine Docker-Container primär den Reverse-Proxy Traefik. Um die Container in einer grafischen GUI verwalten zu können, habe ich zusätzlich Portainer im Einsatz. Für einen Single-Server passt das Setup so weit, wer aber mehrere Server einsetzen will, kann dazu Docker-Swarm verwenden. Ich habe dazu zunächst Portainer in Kombination mit Swarm getestet und das Setup um Traefik inklusive...