Metainformationen zur Seite
- de
Docker Symfony Projekt
Inhalt
Das beschriebene docker compose Stack enthält die Komponenten
- PHP als FPM, mit Installation von Composer
- Nginx als Webserver mit PHP-FastCGI
- MySQL
- phpMyAdmin als Oberfläche zum Verwalten einer Datenbank
- MailCatcher für den lokalen E-Mail-Versand
Dateien
Hier die Struktur der Ordner und Deteien des Projekts:
[] app # Hier wird die Symfony-Anwendung installiert [] nginx # Nginx Konfiguration +-- default.conf [] mysql # MySQL Daten [] php # PHP Docker Konfiguration +-- Dockerfile docker-compose.yml
docker Compose-Datei
- docker-compose.yml
services: entw-php: build: context: ./php volumes: - ./app:/app entw-nginx: image: nginx ports: - 8080:80 volumes: - ./app:/app - ./nginx/default.conf:/etc/nginx/conf.d/default.conf entw-mysql: image: mysql command: [ '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci' ] volumes: - ./mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=root entw-phpmyadmin: image: phpmyadmin/phpmyadmin ports: - 8081:80 environment: - PMA_HOST=entw-mysql - PMA_USER=root - PMA_PASSWORD=root entw-mailcatcher: image: schickling/mailcatcher ports: - 8082:1080
Nginx-Konfiguration
- default.conf
server { server_name localhost; root /app/public; location / { try_files $uri /index.php$is_args$args; } location ~ ^/index\.php(/|$) { fastcgi_pass entw-php:9000; fastcgi_split_path_info ^(.+\.php)(/.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; fastcgi_param DOCUMENT_ROOT $realpath_root; internal; } location ~ \.php$ { return 404; } error_log /var/log/nginx/project_error.log; access_log /var/log/nginx/project_access.log; }
PHP Docker-Datei
- Dockerfile
FROM php:8.0-fpm # Install packages RUN apt-get update && \ apt-get install -y \ curl \ unzip \ git \ && \ apt-get clean -y \ && \ rm -rf /var/cache/apt /var/lib/apt/lists/* # Install PHP extensions RUN docker-php-ext-install pdo_mysql # Install Composer RUN curl -sS https://getcomposer.org/installer \ | php -- --install-dir=/usr/bin --filename=composer # Set workdir WORKDIR /app
Nützliche Befehle
Container hochfahren:
$ docker compose up -d
Container runterfahren:
$ docker compose down
Änderungen am PHP Dockerfile vornehmen und das Image neu erstellen:
$ docker compose up -d --build
Konsole im Container betreten:
$ docker compose exec entw-php bash
Symfony-Anwendung installieren:
$ docker compose exec entw-php bash root@...:/app# composer create-project symfony/skeleton .
Wichtig hier der Punkt am Ende, damit das Symfony-Projekt in diesem Ordner installiert wird, und nicht im Unterordner skeleton
.
Container runterfahren und auch die Images entfernt werden:
$ docker compose down --rmi all