Installieren von Docker unter Ubuntu 14.04
Verwenden Sie ein anderes System? Docker ist eine Anwendung, mit der Programme bereitgestellt werden können, die als Container ausgeführt werden. Es wurde im beliebten Go-Programm geschrieben
PHP-Anwendungen bestehen normalerweise aus einem Webserver, einem relationalen Datenbanksystem und dem Sprachinterpreter selbst. In diesem Tutorial werden wir einen vollständigen PHP-Anwendungsstapel mit Docker nutzen. Dies ist ein ausführliches Tutorial, in dem wir Container für Nginx (den Webserver), MySQL (das Datenbanksystem) und PHP erstellen und orchestrieren.
In diesem Tutorial schreiben wir eine einfache Anwendung, die eine Liste von Städten aus einer Datenbank liest und auf einer Webseite anzeigt. Auf diese Weise demonstrieren wir eine grundlegende, aber funktionierende PHP-Anwendung.
In diesem Handbuch wird davon ausgegangen, dass Docker-CE bereits installiert ist und mindestens über minimale Docker-Kenntnisse verfügt. In diesem Fall können Sie die folgenden Tutorials lesen:
Eine Docker-basierte Anwendung im realen Leben besteht normalerweise aus mehreren Containern. Die manuelle Verwaltung kann leicht unübersichtlich und umständlich werden. Hier kommt Docker-Compose ins Spiel. Es hilft Ihnen, eine Reihe von Containern über eine einfache yaml
Konfigurationsdatei zu verwalten .
Installieren Sie Docker-Compose.
curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Erstellen Sie einen Ordner, in dem alle erforderlichen Dateien dieses Beispiels gespeichert sind cd
. Von nun an ist dies unser Arbeitsverzeichnis und jeder Befehl wird in diesem Ordner ausgeführt und jeder Pfad wird relativ dazu referenziert. Auf diesen Ordner kann später als verwiesen werden WORKING_DIR
.
mkdir ~/docker
cd ~/docker
Erstellen Sie nun drei weitere Ordner.
mkdir php nginx app
In dem php
Ordner erstellen wir unser benutzerdefiniertes PHP-Image, in dem nginx
Ordner befinden sich die erforderlichen Dateien für unser benutzerdefiniertes Nginx-Image und in dem app
Ordner werden der Quellcode und die Konfiguration unserer Beispielanwendung abgelegt.
In diesem Beispiel stellen wir php-fpm
eine Verbindung zum Nginx-Webserver her. Wir werden das offizielle PHP-Basis-Image verwenden. Wir müssen jedoch auch einige Erweiterungen installieren und aktivieren, damit wir auf die Datenbank zugreifen können. php
Erstellen Sie im Ordner eine Datei mit dem Namen Dockerfile
und fügen Sie den folgenden Inhalt hinzu.
FROM php:7.1-fpm-alpine3.4
RUN apk update --no-cache \
&& apk add --no-cache $PHPIZE_DEPS \
&& apk add --no-cache mysql-dev \
&& docker-php-ext-install pdo pdo_mysql
Beachten Sie, dass wir die alpine Version des offiziellen PHP-Images verwenden. Alpine ist eine sehr kleine Verbreitung, die auf Container ausgerichtet ist, indem sie viel kleinere Stellflächen bietet. Beachten Sie auch die Verwendung des Befehls docker-php-ext-install
. Das offizielle PHP-Image bietet diesen Befehl, um die Installation und Konfiguration von PHP-Erweiterungen zu vereinfachen.
Lassen Sie uns nun dieses Docker-Image erstellen, indem Sie Folgendes (in unserem WORKING_DIR
) ausgeben :
docker build -t vultr-php php/
docker-compose.yml
DateiWie bereits erwähnt, docker-compose
können Sie eine Reihe von Containern über eine einfache Konfigurationsdatei verwalten. Diese Konfigurationsdatei wird normalerweise benannt docker-compose.yml
. Erstellen Sie diese Datei im app
Ordner.
touch app/docker-compose.yml
Fügen Sie nun den folgenden Inhalt in diese Datei ein.
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
Wir werden diese Syntax erklären. Beachten Sie zuerst die erste Zeile.
version: '2'
Dies gibt die Version der verwendeten docker-compose.yml
Konfigurationsdatei an. In der nächsten Zeile werden die Dienste oder mit anderen Worten die zu bereitstellenden Container angegeben.
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
Beachten Sie, dass jeder Dienst einen bestimmten Schlüssel im services
Block hat. Der hier angegebene Name wird später verwendet, um auf diesen bestimmten Container zu verweisen. Beachten Sie auch, dass php
wir in der Konfiguration das Image definieren, das zum Ausführen des Containers verwendet wird (dies ist das Image, das wir zuvor erstellt haben). Wir definieren auch eine Volumenzuordnung.
volumes:
- ./:/app
Dies weist docker-compose
an, das aktuelle Verzeichnis ( ./
) dem /app
Verzeichnis im Container zuzuordnen . In der letzten Zeile wird der /app
Ordner im Container als Arbeitsverzeichnis festgelegt. Dies bedeutet, dass in diesem Ordner standardmäßig alle zukünftigen Befehle in einem Container ausgeführt werden.
Wir können jetzt unsere Container orchestrieren.
cd ~/docker/app
docker-compose up -d
Sie können den folgenden Befehl ausführen, um sicherzustellen, dass der PHP-Container ausgeführt wurde:
docker ps
Noch im app
Ordner können wir mit Hilfe des docker-compose
Befehls jeden Befehl in einem definierten Service-Container ausführen .
docker-compose exec [service] [command]
Der [service]
Platzhalter bezieht sich auf den Serviceschlüssel. In unserem Fall war dies php
. Lassen Sie uns einen Befehl im Container ausführen, um unsere PHP-Version zu überprüfen.
docker-compose exec php php -v
Sie sehen die folgende Ausgabe.
PHP 7.1.14 (cli) (built: Feb 7 2018 00:40:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
Genau wie beim PHP-Container müssen wir ein benutzerdefiniertes Image für den Webserver erstellen. In diesem Fall müssen wir jedoch nur eine Konfiguration für unsere bereitstellen virtual host
. Stellen Sie sicher , Sie sind in unseren WORKING_DIR
und erstellen Dockerfile
innerhalb des nginx
Ordners:
cd ~/docker
touch nginx/Dockerfile
Fügen Sie nun folgenden Inhalt ein Dockerfile
:
FROM nginx:1.13.8-alpine
COPY ./default.conf /etc/nginx/conf.d/default.conf
Wir verwenden das Standard-Nginx-Bild, das auf Alpine basiert. In diese Docker-Datei kopieren wir einfach eine Konfigurationsdatei in unser Anwendungssetup. Erstellen Sie vor dem Erstellen dieses Images eine Konfigurationsdatei.
touch nginx/default.conf
Füllen Sie es nun mit diesem Inhalt.
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /app;
index index.php;
#server_name server_domain_or_IP;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
Beachten Sie, dass fastcgi_pass php:9000
wir in der Zeile den PHP-Container anhand seines Namens im service
Block der docker-compose.yml
Konfigurationsdatei referenzieren . Erstellt intern docker-compose
ein Netzwerk und weist jedem der definierten Dienste den Dienstnamen als Hostnamen zu. Wir können jetzt das Nginx-Image erstellen.
docker build -t vultr-nginx nginx/
docker-compose.yml
Aktualisieren Sie nun die app/docker-compose.yml
Datei.
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
web:
image: vultr-nginx
volumes:
- ./:/app
depends_on:
- php
ports:
- 80:80
Wir haben nur einen neuen Service hinzugefügt. Die Konfiguration ist bis auf die folgenden nahezu identisch.
depends_on:
- php
ports:
- 80:80
Sobald der Nginx-Container eine vollständige Initialisierung des PHP-Dienstes benötigt, erzwingen wir diese Anforderung in der depends_on
Option. Der ports
Konfigurationsschlüssel ordnet einen Host-Port einem Container-Port zu. Hier ordnen wir den Port 80
im Host dem Port 80
im Container zu.
Erstellen Sie nun eine Datei mit dem Namen index.php
im app
Ordner und fügen Sie Folgendes ein.
<?php phpinfo();
Stellen Sie sicher, dass der Port 80
über Ihre Firewall zugänglich ist, und führen Sie die folgenden Schritte aus.
cd ~/docker/app
docker-compose up -d
Überprüfen Sie erneut, ob der Dienst aktiv ist.
docker ps
Öffnen Sie einen Browser und greifen Sie zu [vultr-instance-ip]
. Sie können die IP-Adresse Ihrer Vultr-Instanz ermitteln, indem Sie Folgendes ausführen.
hostname -I
Sie sehen die PHP-Infoseite.
Mit dem offiziellen MySQL-Image können Sie den Container über einfache Umgebungsvariablen konfigurieren. Dies kann mit einer environment
Option innerhalb der Serviceblockdefinition erfolgen. Aktualisieren Sie die ~/docker/app/docker-compose.yml
Datei wie folgt.
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
web:
image: vultr-nginx
volumes:
- ./:/app
depends_on:
- php
ports:
- 80:80
mysql:
image: mysql:5.7.21
volumes:
- ./:/app
- dbdata:/var/lib/mysql
environment:
- MYSQL_DATABASE=world
- MYSQL_ROOT_PASSWORD=root
working_dir: /app
volumes:
dbdata:
Jetzt haben wir einen neuen Dienst für die Datenbank definiert. Beachten Sie die Linie dbdata:/var/lib/mysql
. Dadurch wird der Pfad auf dem Container /var/lib/mysql
auf einem von Docker verwalteten persistenten Volume bereitgestellt. Auf diese Weise bleiben die Datenbankdaten bestehen, nachdem der Container entfernt wurde. Dieses Volume muss in einem Block der obersten Ebene definiert werden, wie Sie am Ende der Datei sehen können.
Laden Sie vor dem Orchestrieren unserer neuen Konfiguration eine MySQL-Beispieldatenbank herunter. Die offizielle MySQL-Dokumentation enthält einige Beispieldatenbanken. Wir werden die bekannte Weltdatenbank verwenden. Diese Datenbank enthält eine Liste der Länder und Städte. Führen Sie die folgenden Schritte in unserem App-Ordner aus, um dieses Beispiel herunterzuladen.
curl -L http://downloads.mysql.com/docs/world.sql.gz -o world.sql.gz
gunzip world.sql.gz
Jetzt können wir unsere Container orchestrieren.
docker-compose up -d
Wie Sie vielleicht bereits bemerkt haben, docker-compose up
startet der Befehl nur die Container, die noch nicht gestartet wurden. Es überprüft die Unterschiede zwischen Ihrer docker-compose.yml
Datei und der aktuellen Konfiguration der ausgeführten Container.
Überprüfen Sie noch einmal, ob der MySQL-Container gestartet wurde.
docker ps
Füllen Sie nun die Weltdatenbank.
docker-compose exec -T mysql mysql -uroot -proot world < world.sql
Sie können überprüfen, ob die Datenbank gefüllt wurde, indem Sie Daten direkt aus der Datenbank auswählen. Greifen Sie zuerst auf die MySQL-Eingabeaufforderung im Container zu.
docker-compose exec mysql mysql -uroot -proot world
Führen Sie in der MySQL-Eingabeaufforderung Folgendes aus.
select * from city limit 10;
Sie sehen eine Liste der Städte. Beenden Sie nun die MySQL-Eingabeaufforderung.
mysql> exit
Nachdem alle erforderlichen Container betriebsbereit sind, können wir uns auf unsere Beispielanwendung konzentrieren. Aktualisieren Sie die app/index.php
Datei wie folgt.
<?php
$pdo = new PDO('mysql:host=mysql;dbname=world;charset=utf8', 'root', 'root');
$stmt = $pdo->prepare("
select city.Name, city.District, country.Name as Country, city.Population
from city
left join country on city.CountryCode = country.Code
order by Population desc
limit 10
");
$stmt->execute();
$cities = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Vultr Rocks!</title>
</head>
<body>
<h2>Most Populous Cities In The World</h2>
<table>
<thead>
<tr>
<th>Name</th>
<th>Country</th>
<th>District</th>
<th>Population</th>
</tr>
</thead>
<tbody>
<?php foreach($cities as $city): ?>
<tr>
<td><?=$city['Name']?></td>
<td><?=$city['Country']?></td>
<td><?=$city['District']?></td>
<td><?=number_format($city['Population'], 0)?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</body>
</html>
Wenn Sie [vultr-instance-ip]
über einen Webbrowser darauf zugreifen , wird eine Liste der bevölkerungsreichsten Städte der Welt angezeigt. Herzlichen Glückwunsch, Sie haben eine voll funktionsfähige PHP-Anwendung mit Docker bereitgestellt.
In diesem Tutorial habe ich Schritt für Schritt gezeigt, wie eine voll funktionsfähige PHP-Anwendung konfiguriert wird. Wir haben benutzerdefinierte Images für PHP und Nginx erstellt und Docker-Compose so konfiguriert, dass unsere Container orchestriert werden. Obwohl dieses Setup sehr einfach und einfach ist, spiegelt es ein reales Szenario wider.
In diesem Handbuch haben wir unsere Bilder lokal erstellt und markiert. Für eine flexiblere Einrichtung können Sie diese Images in eine Docker-Registrierung übertragen . Sie können auf die offizielle Docker-Registrierung zugreifen oder sogar Ihre eigene Docker-Registrierung einrichten. In jedem Fall können Sie so Ihre Bilder auf einem Host erstellen und auf einem anderen verwenden.
Für eine detailliertere Verwendung von docker-compose
sollten Sie sich auf die offizielle Dokumentation beziehen .
Abhängig von Ihren Anwendungsanforderungen und dem von Ihnen verwendeten PHP-Framework möchten Sie möglicherweise weitere Erweiterungen hinzufügen. Dies kann einfach durch Ändern des Dockerfile
zum Erstellen unseres benutzerdefinierten PHP-Images verwendeten Bilds erfolgen. Bei einigen Erweiterungen müssen jedoch zusätzliche Abhängigkeiten im Container installiert werden. Sie sollten sich auf die Liste der Erweiterungen in der offiziellen PHP-Dokumentation beziehen, um die grundlegenden Anforderungen jeder Erweiterung zu überprüfen.
Verwenden Sie ein anderes System? Docker ist eine Anwendung, mit der Programme bereitgestellt werden können, die als Container ausgeführt werden. Es wurde im beliebten Go-Programm geschrieben
Übersicht RancherOS ist ein unglaublich leichtes Betriebssystem (nur ca. 60 MB), auf dem ein System-Docker-Daemon als PID 0 zum Ausführen von Systemdiensten ausgeführt wird
Verwenden Sie ein anderes System? Einführung Docker Swarm verwandelt Ihre einzelnen Server in einen Computercluster. Erleichterung der Skalierung, Hochverfügbarkeit an
In diesem Tutorial werden die Grundlagen für den Einstieg in Docker erläutert. Ich gehe davon aus, dass Sie Docker bereits installiert haben. Die Schritte in diesem Tutorial funktionieren an einem
Wenn Sie eine Webanwendung ausführen, möchten Sie normalerweise Ihre Ressourcen optimal nutzen, ohne Ihre Software für die Verwendung von Multithreading konvertieren zu müssen
Wir alle kennen und lieben Docker, eine Plattform zum Erstellen, Verwalten und Verteilen von Anwendungscontainern auf mehreren Computern. Docker Inc. bietet einen Service t
Dieser Artikel zeigt Ihnen, wie Sie Ihre Knotenanwendung in einem Docker-Container bereitstellen. Hinweis: In diesem Lernprogramm wird davon ausgegangen, dass Docker installiert und gelesen ist
Verwenden Sie ein anderes System? Docker ist eine Anwendung, die die Bereitstellung von Software in virtuellen Containern ermöglicht. Es wurde im Go-Programm geschrieben
Rancher OS ist eine sehr leichte Linux-Distribution, die auf Docker basiert. Das Betriebssystem selbst wiegt etwa 20 MB. Mit diesem Tutorial können Sie loslegen
Verwenden Sie ein anderes System? Einführung Sentry ist eine Open Source-Lösung für die Fehlerverfolgung. Sentry verfolgt Ausnahmen und andere nützliche Nachrichten
Übersicht Dieser Artikel soll Ihnen helfen, einen Kubernetes-Cluster in kürzester Zeit mit kubeadm zum Laufen zu bringen. In diesem Handbuch werden zwei Server bereitgestellt
Dieser Artikel erklärt, wie Docker-Compose unter CoreOS installiert wird. In CoreOS ist der Ordner / usr / unveränderlich, sodass der Standardpfad / usr / local / bin für nicht verfügbar ist
Harbor ist ein Open-Source-Registrierungsserver der Enterprise-Klasse, auf dem Docker-Images gespeichert und verteilt werden. Harbour erweitert die Open Source Docker Distribution b
Einführung Docker ist eine Anwendung, mit der wir Programme bereitstellen können, die als Container ausgeführt werden. Es wurde in der beliebten Programmiersprache Go geschrieben
Kubernetes ist eine Open-Source-Plattform, die von Google für die Verwaltung von Containeranwendungen auf einem Servercluster entwickelt wurde. Es baut auf einem Jahrzehnt auf und
Voraussetzungen Docker Engine 1.8+. Mindestens 4 GB Speicherplatz. Mindestens 4 GB RAM. Schritt 1. Docker installieren Um SQL-Server zu installieren, muss Docker mus
LXC-Container (Linux-Container) sind eine Betriebssystemfunktion unter Linux, mit der mehrere isolierte Linux-Systeme auf einem einzigen Host ausgeführt werden können. Thes
Verwenden Sie ein anderes System? Einführung Rancher ist eine Open Source-Plattform zum Ausführen von Containern und zum Erstellen eines privaten Containerservices. Rancher ist Basis
Einführung In diesem Handbuch erfahren Sie, wie Sie einen Docker-Schwarm mit mehreren Alpine Linux 3.9.0-Servern und Portainer erstellen und konfigurieren. Bitte beachten Sie, dass
Ransomware-Angriffe nehmen zu, aber kann KI helfen, den neuesten Computervirus zu bekämpfen? Ist KI die Antwort? Lesen Sie hier, ob KI boone oder bane ist
ReactOS, ein quelloffenes und kostenloses Betriebssystem, ist hier mit der neuesten Version. Kann es den Anforderungen moderner Windows-Benutzer genügen und Microsoft zu Fall bringen? Lassen Sie uns mehr über dieses alte, aber neuere Betriebssystem erfahren.
Whatsapp hat endlich die Desktop-App für Mac- und Windows-Benutzer auf den Markt gebracht. Jetzt können Sie ganz einfach von Windows oder Mac auf WhatsApp zugreifen. Verfügbar für Windows 8+ und Mac OS 10.9+
Lesen Sie dies, um zu erfahren, wie Künstliche Intelligenz bei kleinen Unternehmen beliebt wird und wie sie die Wahrscheinlichkeit erhöht, sie wachsen zu lassen und ihren Konkurrenten einen Vorsprung zu verschaffen.
Vor kurzem hat Apple macOS Catalina 10.15.4 als Ergänzungsupdate veröffentlicht, um Probleme zu beheben, aber es scheint, dass das Update mehr Probleme verursacht, die zum Bricking von Mac-Computern führen. Lesen Sie diesen Artikel, um mehr zu erfahren
13 Tools zur kommerziellen Datenextraktion von Big Data
Unser Computer speichert alle Daten in einer organisierten Weise, die als Journaling-Dateisystem bekannt ist. Es ist eine effiziente Methode, die es dem Computer ermöglicht, Dateien zu suchen und anzuzeigen, sobald Sie auf die Suche klicken.https://wethegeek.com/?p=94116&preview=true
Da sich die Wissenschaft schnell weiterentwickelt und einen Großteil unserer Bemühungen übernimmt, steigt auch das Risiko, uns einer unerklärlichen Singularität auszusetzen. Lesen Sie, was Singularität für uns bedeuten könnte.
Ein Einblick in 26 Big-Data-Analysetechniken: Teil 1
KI im Gesundheitswesen hat in den letzten Jahrzehnten große Fortschritte gemacht. Somit wächst die Zukunft der KI im Gesundheitswesen immer noch von Tag zu Tag.