Heim > Artikel > Betrieb und Instandhaltung > So erstellen Sie mit Docker eine PHP+Nginx+Swoole+MySQL+Redis-Umgebung
1. Erstellen Sie ein Docker-Image mit der Erweiterung swoole-redis-pdo_mysql-gd
1. Erstellen Sie eine Dockerfile-Datei
vim dockerfile
2. Schreiben Sie
from php:7.1-fpm run apt-get update && apt-get install -y \ libfreetype6-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-install -j$(nproc) iconv \ && 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-configure pdo_mysql \ && docker-php-ext-install pdo_mysql \ && pecl install redis-4.3.0 \ && pecl install swoole \ && docker-php-ext-enable redis swoole
in die Dockerfile-Datei. 3. Erstellen Sie ein benutzerdefiniertes PHP-Image. Die Hauptsache ist, das letzte „.“ nicht zu verpassen, nämlich das aktuelle Verzeichnis zum Erstellen des Images anzugeben.
docker build -t myphp4 .
Führen Sie den Befehl aufgrund von Netzwerkproblemen usw. aus. Nach dem Erfolg wird ein Code ähnlich dem folgenden angezeigt. 🎜🎜#...
Build-Prozess erfolgreich abgeschlossenInstallation von '/usr/local/include/php/ext/swoole/config.h'2. Docker-compose.yml-Datei erstellenInstallation von '/usr/local/lib/ php/extensions/no-debug-non-zts-20160303/swoole.so'
install ok:channel://pecl.php.net/swoole-4.3.1
Konfigurationsoption „php_ini“ ist nicht auf php.ini-Speicherort festgelegt
Sie sollten „extension=swoole .so“ zu php.ini hinzufügen
Zwischencontainer ad1420f7554f entfernen
---> 2f2f332d73ce
erfolgreich erstellt 2f2f332d73ce
myphp4 erfolgreich getaggt:latest
# 🎜🎜#Bisher wurde das benutzerdefinierte myphp4-Image von Docker erfolgreich erstellt!
mkdir pnsmr cd pnsmr vim docker-compose.yml
Folgenden Code schreibenversion: '3.0'
services:
nginx:
image: "nginx:latest"
ports:
- "10000:80"
volumes:
- /var/www/html:/usr/share/nginx/html
php-fpm:
image: "myphp4"
volumes:
- /var/www/html:/usr/share/nginx/html
mysql:
image: "mysql:latest"
redis:
image: "redis:4.0"
Befehl ausführen# 🎜🎜#
docker-compose up -dErfolg kann sich sehen lassen
Warnung: Die von Ihnen verwendete Docker-Engine läuft im Schwarmmodus.
compose nicht Verwenden Sie den Schwarmmodus, um Dienste auf mehreren Knoten in einem Schwarm bereitzustellen.
Um Ihre Anwendung im Schwarm bereitzustellen, verwenden Sie „Docker Stack Deploy“.Netzwerk „pnsmr_default“ mit dem Standardtreiber erstellen
pnsmr_php-fpm_1 erstellen ... fertig
pnsmr_redis_1 erstellen ... fertigpnsmr_mysql_1 erstellen ... fertig
erstellen pnsmr_nginx_1 ... fertig3 Ändern Sie jede Dienstkonfigurationsdatei# 🎜🎜## 🎜🎜#
Zu diesem Zeitpunkt wurde der Nginx-MySQL-Redis-PHP-Dienst gestartet
1. Geben Sie 127.0.0.1:9998 in den Browser ein. #Hier sollte Ihre Server-IP-Adresse eingegeben werden, Sie können das Bild unten sehen
# 🎜🎜#
2 Als nächstes müssen Sie die Nginx-Konfigurationsdatei im Container ändern. Verwenden Sie zunächst den Befehl, um die Docker-IP-Adresse jedes Containers anzuzeigen.
docker inspect -f '{{.name}} - {{range .networksettings.networks}}{{.ipaddress}}{{end}}' $(docker ps -aq)Dieser Befehl kann alle Docker-Container anzeigen. Das Ergebnis ähnelt dem Bild unten. Sie können die entsprechende IP-Adresse für die interne Kommunikation verwenden. 🎜🎜#3. Kopieren Sie die Konfigurationsdatei des Nginx-Containers. Kommen Sie heraus und ändern und ersetzen Sie sie, damit Nginx PHP analysieren kann
docker cp pnsmr_nginx_1:/etc/nginx/conf.d/default.conf nginx.conf vim nginx.confÄndern Sie den folgenden Code#🎜🎜 #
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the php scripts to apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the php scripts to fastcgi server listening on 127.0.0.1:9000 # location ~ \.php$ { root html; fastcgi_pass 172.24.0.3:9000;#此处需要填写你的php容器的docker内部通讯ip fastcgi_index index.php; fastcgi_param script_filename /usr/share/nginx/html/$fastcgi_script_name; include fastcgi_params; } # deny access to .htaccess files, if apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } docker cp nginx.conf pnsmr_nginx_1:/etc/nginx/conf.d/default.conf #将修改好的配置文件拷贝到容器里 docker container stop pnsmr_nginx_1 docker container start pnsmr_nginx_1 #重启nginx容器使配置文件生效 vim /var/www/html/index.php #在服务器本地目录新建 index.php 文件,输入<?php phpinfo(); 并保存 vim /var/www/html/index.html #在服务器本地目录新建 index.html 文件,输出helloworld
Erstellen Sie eine Testdatei
vim /var/www/html/redis.php #用于测试redis是否配置成功 <?php $redis = new redis(); $redis->connect("172.24.0.4",6379); $redis->set('test','this is a test for redis'); echo $redis->get('test');
Das obige ist der detaillierte Inhalt vonSo erstellen Sie mit Docker eine PHP+Nginx+Swoole+MySQL+Redis-Umgebung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!