So erstellen Sie PHP7 mit einem benutzerdefinierten Docker-Image

So erstellen Sie PHP7 mit einem benutzerdefinierten Docker-Image

Führen Sie zunächst eine einfache Docker-Installation durch.

Um das Image anzupassen, müssen wir ein Basisimage auswählen, um unser eigenes Image zu erstellen: Um es ganz klar auszudrücken, müssen wir die Befehle ausführen, um verschiedene Programme in einem Container mit einer grundlegenden Definition zu installieren, um die sogenannte Dockerfile-Datei zu generieren. In diesem Fall besteht der erste Schritt darin, ein lokales Image als Basisimage für den Betrieb zu finden:

1


Erstellen wir, wie in der Abbildung oben gezeigt, eine Docker-Datei basierend auf dem CentOS-Image.

2 Im zweiten Schritt müssen wir ein Verzeichnis erstellen, in dem die Dockerfile-Datei gespeichert wird


Erstellen Sie unter root ein Verzeichnis docker_demo, um die Dockerfile-Datei und die zu installierenden Programmdateien zu speichern. Da ich eine benutzerdefinierte PHP-Umgebung erstellen möchte, erstellen wir ein komprimiertes PHP7-Paket.

wget http://am1.php.net/get/php-7.0.0.tar.gz/from/this/mirror 

Ändern Sie dann den Namen

Jetzt haben wir sowohl PHP als auch Nginx. Was COMPOSER betrifft, können Sie es selbst bedienen, nachdem PHP erfolgreich installiert wurde~~~

Der nächste Schritt besteht darin, die Dockerfile-Datei zu schreiben. Werfen wir vorher einen kurzen Blick auf das Schlüsselwortformat von Dockerfile:

FROM gibt an, auf welchem ​​Bild basiert

RUN-Installationssoftware verwenden

MAINTAINER Der Schöpfer des Bildes

CMD ist der Befehl, der ausgeführt wird, wenn der Container gestartet wird. In einer Docker-Datei kann es jedoch nur einen CMD-Befehl geben. Wenn mehrere CMD-Befehle vorhanden sind, wird nur der letzte ausgeführt.

ENTRYPOINT Der Befehl, der ausgeführt wird, wenn der Container gestartet wird. In einem Dockerfile kann jedoch nur ein CMD-Befehl vorhanden sein. Wenn mehrere Befehle vorhanden sind, wird nur der letzte ausgeführt.

USER Der Benutzer, der den Container betreibt

EXPOSE Der vom Dienst im Container freigegebene Port. Der Host muss beim Ausführen des Containers auch eine Portzuordnung durchführen:

docker run -d -p 80:8080 centos6xxx

Der obige Befehl ordnet Port 8080 innerhalb des Containers Port 80 auf dem Host zu.

ENV wird zum Festlegen von Umgebungsvariablen verwendet

ADD kopiert Dateien auf dem Host in den entsprechenden Pfad im Container. Alle in den Container kopierten Dateien und Ordner haben die Berechtigung 0755 und UID und GID sind 0. Wenn die Datei in einem erkennbaren komprimierten Format vorliegt, hilft Docker beim Dekomprimieren. ADD wird beim Erstellen des Images nur einmal ausgeführt und beim späteren Ausführen des Containers nicht erneut geladen.

Beispiele hierfür sind:

HINZUFÜGEN von nginx-1.12.2.tar.gz /usr/local/src

VOLUME kann lokale Ordner oder Ordner anderer Container in den Container einbinden.

WORKDIR Zu verwendendes Verzeichnis wechseln (entspricht dem CD-Verzeichnis)

Die von ONBUILD angegebenen Befehle werden nicht beim Erstellen des Images ausgeführt, sondern in seinen Unterimages.

Nachdem wir die grundlegenden Dockerfile-Befehle gelernt haben, versuchen wir, diese Umgebung zu erstellen.

Docker-Pull Centos

Laden Sie zuerst ein Basis-Image herunter. Wenn Sie diesen Schritt haben, ignorieren Sie ihn bitte. Hier ist mein Dockerfile

# Basisbild
# Basisimage VON docker.io/centos

# MAINTAINERGeschrieben von MAINTAINER [email protected]

# nginx-1.12.2.tar.gz in /usr/local/src einfügen und nginx entpacken Komm schon, lege sowohl nginx als auch PHP im Voraus in das Verzeichnis /usr/local/src des Basisimages, um die Kompilierung und Installation zu erleichtern ADD nginx-1.12.2.tar.gz /usr/local/src
HINZUFÜGEN von php-7.0.0.tar.gz /usr/local/src

# Ausführen des erforderlichen Befehls Installieren Sie eine Reihe chaotischer Abhängigkeitspakete von Nginx RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
AUSFÜHREN: yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx

# Verzeichnis ändern zu /usr/local/src/nginx-1.12.2
ARBEITSVERZEICHNIS /usr/local/src/nginx-1.12.2

# Befehl zum Kompilieren von nginx ausführen
AUSFÜHREN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install

#Installieren Sie zuerst ein lokales Mysql
Führen Sie den Befehl yum install -y wget aus.
Führen Sie wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm aus.
RUN rpm -ivh mysql57-community-release-el7-8.noarch.rpm
Führen Sie den Befehl „yum install -y mysql-server“ aus.


#Beginnen Sie an dieser Stelle mit der Installation von PHP. Beginnen Sie wie üblich mit der Installation einiger kompilierter Abhängigkeitspakete. RUN yum -y install epel-release
Führen Sie den Befehl yum -y install libmcrypt-devel aus.
RUN yum -y installiere libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel
ARBEITSVERZEICHNIS /usr/local/src/php-7.0.0
#编译安装RUN ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-config-file-scan-dir=/usr/local/php7/etc/php.d --with-mcrypt=/usr/include --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-gd --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache && make && make install

RUN cp php.ini-production /usr/local/php7/etc/php.ini

Nachdem die Dockerfile-Datei erfolgreich erstellt wurde, wird sie mit Docker Build erstellt.

Docker-Build -t centos_lnmp:v1.

Der abschließende . stellt den relativen Pfad zum aktuellen Verzeichnis dar. Sie können auch einen absoluten Pfad verwenden.

Dann folgt die lange Wartezeit

Bis das Image erfolgreich erstellt ist, beginnen wir erneut

Docker-Bilder 


Wir sehen, dass das Image erfolgreich erstellt wurde (es besteht eine geringe Chance, dass der Build fehlschlägt. In diesem Fall löschen Sie einfach den Container und das Image und erstellen es neu). Führen Sie dann Folgendes aus:

docker run -dt -p 80:80 centos_lnmp:v1 

Nach erfolgreichem Abschluss können Sie den Container aufrufen und nginx php konfigurieren.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Der in PHP7 eingeführte Unterschied zwischen „??“ und „?:“
  • Beispiele für die Verwendung anonymer PHP7-Klassen
  • Zusammenfassung zur Aktivierung der Oracle OCI8-Erweiterung für Plesk PHP7
  • Tutorial zur Installation von lamp-php7.0 in einer Centos7.4-Umgebung
  • Detaillierte Erklärung der Referenz im PHP7-Kernel
  • Beispiele für PHP7-Echo- und Print-Anweisungen
  • Kompilieren und installieren Sie php7 auf CentOS7, um im PHP-FPM-Modus eine Verbindung zu Apache herzustellen
  • So installieren Sie Redis in PHP7 unter Linux
  • Was sind verwaiste Prozesse und Zombie-Prozesse in PHP7

<<:  js-Datentypen und Beispiele für ihre Beurteilungsmethoden

>>:  MySql-Batch-Insert-Optimierung. Beispiel für SQL-Ausführungseffizienz. Detaillierte Erklärung

Artikel empfehlen

JavaScript implementiert kreisförmiges Karussell

In diesem Artikel wird der spezifische JavaScript...

Webinterview: Benutzerdefinierte Vue-Komponenten und Aufrufmethoden

Import: Aufgrund der Projektanforderungen werden ...

Kurs zur Web-Frontend-Entwicklung Was sind die Web-Frontend-Entwicklungstools

Mit der Entwicklung der Internettechnologie werde...

Eine kurze Diskussion zum CSS-Höhenkollapsproblem

Leistung Zum Beispiel: HTML: <div Klasse="...

HTML verwendet Canvas, um die Bullet-Screen-Funktion zu implementieren

Einführung Kürzlich musste ich für einen großen A...

Bringen Sie Ihnen kostenlos bei, wie Sie AWS-Serverressourcen nutzen

AWS – Amazons Cloud-Computing-Serviceplattform Ic...

So finden Sie Informationen zu nicht festgeschriebenen Transaktionen in MySQL

Vor einiger Zeit habe ich einen Blogbeitrag mit d...

Eine kurze Diskussion über die MySQL-Zeilenanzahl

Wir alle kennen die MySQL-Funktion count(), mit d...