So erstellen Sie ein php-nginx-alpine-Image von Grund auf in Docker

So erstellen Sie ein php-nginx-alpine-Image von Grund auf in Docker

Obwohl ich bereits einige Projekte in einer Docker-Umgebung ausgeführt habe, verstehe ich das Image immer noch nicht sehr gut. Darüber hinaus enthalten die vorhandenen Images im Internet zu viele ungenutzte Bibliotheken, sodass ich beschlossen habe, mein eigenes Image von Grund auf neu zu erstellen.

Alpine Linux ist das Basis-Image

Docker-Pull Gliderlabs/Alpine

Alpine Linux Mirror-Adresse

Das neueste Tag ist Version 3.8 und das Bild ist nur 4 MB groß, was sehr optimiert ist.

Ausführen des Images

Docker-Ausführung -it Gliderlabs/Alpine

Nach dem Ausführen können Sie sehen, dass es ein grundlegendes Linux-Dateisystem gibt. Ich werde es hier nicht demonstrieren, aber wer interessiert ist, kann es selbst ausprobieren.

Installieren Sie PHP und nginx

APK-Aktualisierung
apk php7 nginx hinzufügen

Als Nächstes können Sie je nach Bedarf mit der Installation von PHP-bezogenen Erweiterungspaketen oder anderen Linux-Erweiterungspaketen fortfahren.

Um nach Erweiterungspaketen wie dem PHP7-Toolkit zu suchen, verwenden Sie den folgenden Befehl:

# apk-Suche php7

PHP-Erweiterung installieren

Kopieren Sie den Code wie folgt:
apk hinzufügen php7-mysqli php7-pdo_mysql php7-mbstring php7-json php7-zlib php7-gd php7-intl php7-session php7-fpm php7-memcached

Verzeichnisstruktur

  • php7-Verzeichnis: /etc/php7
  • nginx-Verzeichnis: /etc/nginx

Starten Sie php-fpm und nginx

# Erstellen Sie zuerst die PID-Datei, sonst kann nginx mkdir /run/nginx nicht ausführen 
berühren Sie /run/nginx/nginxpid

# Führen Sie zuerst PHP und dann Nginx aus.
/usr/sbin/php-fpm7
/usr/sbin/nginx

An diesem Punkt können wir sehen, dass PHP und Nginx normal ausgeführt werden und die Spiegelungsumgebung grundsätzlich abgeschlossen ist. Sehen wir uns als Nächstes an, wie dieses Bild gespeichert wird.

Erstellen eines Images

Öffnen Sie ein weiteres Terminal und verwenden Sie Docker PS, um die Image-ID anzuzeigen. Mit dem folgenden Befehl können Sie das Image speichern:

docker commit -a "yisonli" -m "mein erstes php7-nginx" 9d9c6030e5e9 yisonli/php7-nginx-alpine:0.1

Hinweis: 9d9c6030e5e9 ist die Bild-ID, yisonli/php7-nginx-alpine ist der gespeicherte Bildname und die Version ist als 0.1 definiert.

Führen Sie das neu generierte Image aus

Binden Sie Port 8080, um den Effekt zu sehen

docker run -it -p 8080:8080 yisonli/php7-nginx-alpine:0.1

Nach dem manuellen Starten von php-fpm und nginx ist der Effekt im Browser sichtbar.

http://127.0.0.1:8080/index.php

Zusätzliche Docker-Datensätze

【Freigegebener Ordner】

docker run -v `pwd`/www:/var/www/html -it -p 8080:8080 yisonli/php7-nginx-alpine:0.1

Löschen nicht laufender Container

docker rm $(docker ps -a -q)

[Erstellen Sie ein Image mit Dockerfile]

Docker-Build -t yisonli/php7-nginx-alpine:0.2.

0.2 wird erstellt, nachdem der Prozess in diesem Artikel leicht optimiert und in eine Docker-Datei geschrieben wurde, und verfügt auch über ein Startskript.

Es wurde auf Docker Hub hochgeladen und steht zum Download und zur Recherche bereit.

Fügen Sie dem Bild zusätzliche Tags hinzu

Docker-Tag 9d9c6030e5e9 Test/Mytag

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:
  • Problemlösungsvorgänge für Alpine Docker-Bildschriftarten
  • Implementierung eines Tomcat-Images, das mit Dockerfile basierend auf Alpine erstellt wurde
  • Implementierung eines Crawler-Scrapy-Image, das von Dockerfile basierend auf Alpine erstellt wurde
  • Perfekte Lösung für das Zeitzonenproblem des Docker Alpine-Image

<<:  js, um Sternblitzeffekte zu erzielen

>>:  Lösung für das Problem, dass der Eintrag bei der Installation von mysql5.7.18 nicht gefunden werden kann

Artikel empfehlen

So simulieren Sie eine Aufzählung mit JS

Vorwort Im aktuellen JavaScript gibt es kein Konz...

Detaillierte Erklärung asynchroner Iteratoren in nodejs

Inhaltsverzeichnis Vorwort Was sind asynchrone It...

10 Tipps zum Entwerfen nützlicher, benutzerfreundlicher Webanwendungen

Hier sind 10 Tipps zum Entwerfen benutzerfreundli...

Detailliertes Tutorial zur Überwachung von Nginx/Tomcat/MySQL mit Zabbix

Inhaltsverzeichnis Zabbix überwacht Nginx Zabbix ...

Implementierung der Docker-Bereitstellung von Tomcat- und Webanwendungen

1. Docker online herunterladen yum install -y epe...

MySQL stellt Daten über Binlog wieder her

Inhaltsverzeichnis MySQL-Protokolldateien binlog ...

Windows 10 ist zu schwierig zu verwenden. Wie passen Sie Ihr Ubuntu an?

Autor | Herausgeber Awen | Produziert von Tu Min ...

Beispielcode zur Implementierung einer Pivot-Tabelle in MySQL/MariaDB

Im vorherigen Artikel wurden mehrere Methoden zur...

So zeigen Sie die Ausführungszeit von SQL-Anweisungen in MySQL an

Inhaltsverzeichnis 1. Erste SQL-Vorbereitung 2. M...