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

Anwendungsszenarien für React useMemo und useCallback

Inhaltsverzeichnis verwendenMemo useCallback verw...

So fügen Sie Div-Elementen abgerundete Ränder hinzu

Wie unten dargestellt: CSS- CodeInhalt in die Zwi...

Öffentliche kostenlose STUN-Server

Öffentliche kostenlose STUN-Server Wenn das SIP-T...

Stellen Sie die Grafana+Prometheus-Konfiguration mit Docker bereit

docker-compose-monitor.yml Version: '2' N...

So konfigurieren Sie einen Pfadalias für das React-Scaffolding

Die React-Version beim Schreiben dieses Artikels ...

Detaillierte Erklärung der Verwendung von SetUp- und Reactive-Funktionen in Vue3

1. Wann soll setUp ausgeführt werden? Wir alle wi...

Lösung für 1067, wenn Mysql in Windows startet

Ich habe erst vor ein paar Tagen mit der Arbeit b...

CSS-Stil zum Zentrieren des HTML-Tags im Browser

CSS-Stil: Code kopieren Der Code lautet wie folgt:...

Beispiel für die Verwendung der setInterval-Funktion in React

Dieser Artikel basiert auf der Windows 10-Systemu...