Heim >Backend-Entwicklung >PHP-Tutorial >Verwenden Sie Docker, um eine integrierte Service-LNMP-Umgebung zu erstellen

Verwenden Sie Docker, um eine integrierte Service-LNMP-Umgebung zu erstellen

不言
不言Original
2018-04-09 15:14:231940Durchsuche

In diesem Artikel wird hauptsächlich die Verwendung von Docker zum Erstellen einer integrierten Service-LNMP-Umgebung vorgestellt. Jetzt teile ich ihn mit allen und biete eine Referenz für Freunde in Not.

Nachdem ich die grundlegenden Befehle von Docker beherrschte, wollte ich Docker auch verwenden, um eine tatsächliche unterstützende Umgebung zu erstellen, also habe ich zum Testen meine am häufigsten verwendete LNMP-Umgebung verwendet. Die Reihenfolge zum Ausführen der unterstützenden Umgebung ist mysql->php->nginx. Der Grund dafür wird unten erläutert.

1. MySQL

Die Bilder für den anschließend ausgeführten Dienst stammen alle vom Beamten, es sei denn, es liegen spezielle Anweisungen vor Der Spiegel ist sicherer und erspart Sorgen und Mühe.

# 拉取镜像
$ docker pull mysql
# 运行MySQL
$ docker run MySQL --name mysql -d \
    -p 3306:3306 \
    -v /var/lib/mysql/:/var/lib/mysql/ \
    -e MYSQL_ROOT_PASSWORD=ilovec \

Im Folgenden werden die einzelnen Parameter der oben genannten Operation der Reihe nach erläutert

  1. -- Name: angegebene Operation Der Name des Containers

  2. -d: Den Container im Hintergrund ausführen

  3. -p: Die Portzuordnung zwischen dem Host und der Container

  4. -v: Mounten Sie den Container zur lokalen Verzeichniszuordnung

  5. -e: Geben Sie die Umgebungsvariable zum Ausführen des Containers an

2.PHP

Rufen Sie das offizielle PHP-FPM-Image ab und laden Sie es entsprechend der von Ihnen benötigten PHP-Version herunter PHP-Pakete sind nicht im offiziellen Image enthalten, daher müssen wir die Docker-Datei verwenden, um sie neu zu erstellen. Im Folgenden werden die beiden PHP-Erweiterungspakete mysqli und pdo in der Docker-Datei installiert.

FROM php:7.1-fpm
# Install modules
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN docker-php-ext-install pdo_mysql
CMD ["php-fpm"]

Führen Sie php-fpm aus

docker run -d -p 9000:9000 \
  --name php-fpm \
  --link mysql \
  -v /data/wwwroot/:/data/wwwroot/ \
  php-fpm

Achten Sie auf den --link unter den Parametern. Dieser Parameter ist sehr nützlich für die Verbindung zwischen Containern. Er fügt eine Domänennamenauflösung in /etc/hosts des aktuellen Containers hinzu Entsprechender Container, zum Beispiel im obigen PHP-FPM, Link zu MySQL, dann kann das PHP-Programm in PHP-FPM über die MySQL-Zeichenfolge eine Verbindung zum gerade ausgeführten MySQL-Container herstellen, und Sie können die darin enthaltenen Parsing-Datensätze nach cat sehen /etc/hosts.

172.17.0.2 mysql b41d2569c06d

3.Nginx

Führen Sie Nginx über den folgenden Befehl aus, da Nginx dies tun muss Pass 127.0 .0.1:9000 Port wird verwendet, um eine Verbindung zu PHP-FPM herzustellen, um PHP-Dateien zu analysieren. Sie müssen also über einen Link eine Verbindung zu PHP-FPM herstellen.

docker run -d -p 80:80 \
  --name nginx \
  --link php-fpm \
  -v /data/wwwroot/:/data/wwwroot/ \
  nginx

Es ist erwähnenswert, dass Nginx beim Parsen einer Datei den Inhalt direkt zurückgibt, wenn es sich bei der Anforderung um eine statische Datei handelt Wenn es sich bei der Anfrage um eine PHP-Datei handelt, leitet er die Anfrage an php-fpm weiter, und dann geht php-fpm zum lokalen Computer, um die PHP-Datei zum Parsen zu finden des PHP-FPM-Containers selbst.

Nachdem wir die oben genannten drei Dienststartbefehle nacheinander ausgeführt haben, können wir unser gemeinsames LNMP erstellen. Es ist jedoch etwas mühsam, den obigen Befehl jedes Mal auszuführen, wenn Sie den Dienst ausführen. Für die zentrale Verwaltung können wir den Befehl docker-compose verwenden.

Um Docker-Compose zu verwenden

müssen Sie nur ein lnmp-Verzeichnis erstellen, dann docker-compose.yml im lnmp-Verzeichnis erstellen und den folgenden Befehl eingeben Verwalten Sie die integrierte Umgebung.
Tatsächlich können Sie die Bedeutung jedes Befehls leicht anhand des Namens des Befehls erkennen.

Version: Da es sich bei Docker-Compose um ein Entwicklungstool handelt, ist es sehr wahrscheinlich, dass die Anweisungen für jede Version unterschiedlich sind. Daher muss die anwendbare Version der Docker-Compose-Anweisung zu Beginn deklariert werden.

Bild: bezieht sich auf das Bild, über das der Dienst ausgeführt wird.

depends_on: Dies gibt an, von welcher Software die Software abhängt. Tatsächlich wird auch die Reihenfolge angegeben, in der die Software ausgeführt wird.

version: '2'

services:
  mysql:
    image: "mysql"
    ports:
      - "3306:3306"
    volumes:
      - /var/lib/mysql/:/var/lib/mysql/
    environment:
      MYSQL_ROOT_PASSWORD: password
      
  php-fpm:
    image: "php-fpm"
    depends_on:
      - mysql
    links:
      - mysql
    ports:
      - "9000:9000"
    volumes:
      - /data/wwwroot/:/data/wwwroot/

  nginx:
    image: "nginx"
    depends_on:
      - php-fpm
    links:
      - php-fpm
    volumes:
      - /data/wwwroot/:/data/wwwroot/
    ports:
      - "80:80"

Führen Sie dann in diesem lnmp-Verzeichnis Compose-bezogene Befehle aus, um es zu steuern.

# 运行docker-compose服务
$ docker-compose up -d
# 停止服务
$ docker-compose stop
# 删除该服务相关的容器
$ docker-compose rm
# 运行已存在docker-compose的服务
$ docker-compose start

Verwandte Empfehlungen:

Aufbau einer PHP-Entwicklungsumgebung in Docker


Das obige ist der detaillierte Inhalt vonVerwenden Sie Docker, um eine integrierte Service-LNMP-Umgebung zu erstellen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn