Dieser Artikel stellt hauptsächlich die Verwendung von Docker Compose zur Orchestrierung von Laravel-Anwendungen vor. Jetzt kann ich ihn mit allen teilen, die ihn benötigen
Laravel offiziell Die empfohlene Entwicklungsumgebung ist Homestead (eigentlich eine verpackte Vagrant-Box), daher habe ich Docker Compose verwendet, um eine Entwicklungsumgebung zu organisieren und sie hier zu teilen.
Docker und Docker Compose müssen zuerst installiert werden. Am besten ersetzen Sie das Docker-Warehouse-Image durch ein inländisches. Im Allgemeinen führe ich Vagrant auf meinem Entwicklungscomputer aus und führe dann Docker und andere Anwendungen darauf aus.
Docker empfiehlt offiziell, dass ein Container einen Dienst ausführt, sodass es eine Compose-Orchestrierung gibt und jeder Dienst über die Container-Verbindungstechnologie kommuniziert, wenn beispielsweise ein PHP-Dienst eine Verbindung zu MySQL herstellt , Sie müssen nur den Hostnamen als Containernamen schreiben, dieser wird intern direkt in eine bestimmte IP umgewandelt. Das Codeverzeichnis wird mithilfe von Datenvolumes vom Container auf den Host abgebildet, und die Konfigurationsdateien (Nginx usw.) werden ebenfalls über Datenvolumes dem Container zugeordnet.
Ich habe diesen Satz von Diensten gekapselt, einfach klonen und direkt verwenden. Ich werde hier hauptsächlich über die Implementierungsideen sprechen.
Projektadresse: https://github.com/rootrl/php...
Meine Projektverzeichnisstruktur:
php-environment-with-docker/
├── bin
│ ├── Composer
│ ├── getContainerIp
│ └── php
├── conf
│ ├──. nginx
│ │ └ ── conf.d
│ │ └── nginx.conf
│ └── redis
│ └── redis.conf
├── docker-compose.yaml
├ ─ ─ Dockerfile.php
├── LICENSE
├── README.MD
└── start
bin Dies sind alles gekapselte Befehlszeilentools, tatsächlich Docker-Containerdienste, aber es sind alles sofort einsatzbereite Dienste.
conf Dieses Verzeichnis ist das Konfigurationsverzeichnis der Anwendung und wird mithilfe von Volume der Orchestrierungsdatei von docker-composer.yaml im Container zugeordnet. Im Folgenden wird darauf eingegangen Bildkonstruktion von
Dockerfile.php PHP (es wird einige Anpassungen geben, wie z. B. das Ändern von DNS und die Installation spezieller Erweiterungen)
Starten Sie Run . /start, um alle Dienste zu starten. Sie können diesen Befehl auch nach dem Neustart ausführen
docekr-compose.yaml
version: '2' services: nginx: depends_on: - "php" image: "nginx" volumes: - "$PWD/conf/nginx/conf.d:/etc/nginx/conf.d" - "$PWD/www:/usr/share/nginx/html" ports: - "8888:80" networks: - oa-network container_name: "oa-nginx" command: /bin/bash -c "mkdir -p /var/www && ln -s /usr/share/nginx/html /var/www && nginx -g 'daemon off;'" php: image: "oa-php-fpm" build: context: . dockerfile: "Dockerfile.php" networks: - oa-network container_name: "oa-php-fpm" volumes: - "$PWD/www:/var/www/html" mysql: image: mysql:5.7 volumes: - "$PWD/db_data:/var/lib/mysql" environment: MYSQL_ROOT_PASSWORD: root123 MYSQL_DATABASE: oa MYSQL_USER: oa MYSQL_PASSWORD: oa123 ports: - "3306:3306" networks: - oa-network container_name: "oa-mysql" redis: image: "redis" ports: - "6379:6379" networks: - oa-network volumes: - "$PWD/conf/redis/redis.conf:/usr/local/etc/redis/redis.conf" container_name: "oa-redis" networks: oa-network: driver: bridge
Zum Beispiel in nginx.conf
server { listen 80; server_name localhost; root /usr/share/nginx/html/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/html/public/$fastcgi_script_name; include fastcgi_params; } }
Hier ist die Verbindungsmethode mit php-fpm: php:9000
Dockerfile.php
FROM php:7.2-fpm Run echo "nameserver 223.5.5.5" >> /etc/resolv.conf \ && echo "nameserver 223.6.6.6" >> /etc/resolve.conf \ && apt-get update \ && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \ && docker-php-ext-install -j$(nproc) gd \ && docker-php-ext-install mysqli pdo_mysql \ && pecl install swoole \ && pecl install redis \ && docker-php-ext-enable swoole redis
Dies Ist das PHP-Image Build, ändern Sie hier den DNS-Server und installieren Sie mehrere PHP-Erweiterungen.
Start
./bin/php -v # Laravel artisan ./bin/php artisan
Das Obige ist der gesamte Inhalt davon Artikel, ich hoffe, er wird hilfreich sein. Für weitere verwandte Inhalte achten Sie bitte auf die chinesische PHP-Website!
Das obige ist der detaillierte Inhalt vonOrchestrieren Sie Laravel-Anwendungen mit Docker Compose. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!