LEMP (Linux, Nginx, MySQL, PHP7) Déploiement d'images Docker Stack
À propos de
La construction automatisée docker lemp image LinuxConfig/lemp-php7 peut être utilisée comme test et également comme environnement de production pour des applications PHP dynamiques. Il comprend Debian GNU/Linux, un serveur Web Nginx léger et encore puissant, un système de gestion de base de données relationnel MySQL et un langage de script PHP.
Au moment de la rédaction du moment de la rédaction, Debian Linux ne vient pas avec PHP 7 dans le cadre d'un référentiel ITS standard. À partir de cette raison, PHP 7 a été compilé à partir du code source lors de la construction d'image Docker à l'aide du script compile-php-debian situé à https:/ /github.com/linuxconfig/compile-php-debian .
De plus, tous les modules PHP tiers ne sont pas actuellement pris en charge sur PHP 7.
Déploiement
La section suivante décrit le déploiement de linuxconfig/lemp-php7 docker sur votre hôte docker. Commencez par créer un exemple de site Web PHP avec une poignée de connexion MySQL. Alternativement, ajoutez phpinfo(); dans le mix pour afficher la page d'informations PHP actuelle:
<?php
$link = mysqli_connect("127.0.0.1", "admin", "pass");
if (!$link) {
echo "Error: Unable to connect to MySQL." . PHP_EOL;
echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
exit;
}
echo "Success: A proper connection to MySQL was made!" . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;
mysqli_close($link);
?>
Enregistrez le code ci-dessus dans le fichier index.php et dans un nouveau répertoire html . Alternativement, le répertoire html peut contenir votre application PHP souhaitée:
mkdir html
vi html/index.php
ls html/
index.php
À ce stade, nous sommes prêts à déployer linuxconfig/lemp-php7 Image docker:
docker run --name=lemp -dP -v $PWD/html:/var/www/html linuxconfig/lemp-php7
8306ab0e404e5e5ce4f17731f88a610f7f8bc939289c0746b875716355df0b1a
En exécutant la commande ci-dessus, nous avons créé et lancé un nouveau conteneur Docker lemp . Dans le même temps, nous avons également monté notre répertoire de développement de sites Web html en tant que répertoire racine de Nginx. Les ports MySQL et Nginx sont désormais liés au port aléatoire d'un système hôte.
Les deux ports locaux peuvent désormais être utilisés pour accéder aux services MySQL et Nginx:
docker port lemp
3306/tcp -> 0.0.0.0:32772
80/tcp -> 0.0.0.0:32773
Accès nginx
À ce stade, Nginx Webserver et notre site Web sont accessibles via les ports donnés par la commande $sudo docker port lemp . Utilisez la ligne de commande ou votre navigateur pour accéder à http:// localhost: 32773 URL:
curl -i http://localhost:32773
HTTP/1.1 200 OK
Server: nginx/1.6.2
Date: Sun, 01 Jan 2017 22:51:58 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/7.1.0
Success: A proper connection to MySQL was made!
Host information: 127.0.0.1 via TCP/IP
Accès mysql
La base de données MySQL est accessible via admin utilisateur et mot de passe par défaut passant . Comme précédemment, nous devons d'abord obtenir le numéro de port système hôte lié à la base de données MySQL dans une image Docker en utilisant $sudo docker port lemp . Ensuite, nous pouvons nous connecter à la base de données:
mysql -uadmin -ppass -h 127.0.0.1 -P32772
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 5.5.53-0+deb8u1 (Debian)
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Php 7
Comme déjà mentionné ci-dessus, PHP 7 a été compilé à partir d'une branche PHP 7 à bord saignant. L'installation entière a été effectuée dans le répertoire /usr/local/php-version/. À partir de cette raison, accéder à la ligne de commande php binaire, vous l'exécutez avec un chemin complet:
docker exec -it lemp /usr/local/php-7.1.0/bin/php -v
PHP 7.1.0 (cli) (built: Jan 1 2017 21:33:40) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
with Zend OPcache v7.1.0, Copyright (c) 1999-2016, by Zend Technologies
ou inclure /usr/local/php-7.1.0/bin/ dans le cadre de votre variable environnementale Path .
Informations Complémentaires
Obtenez une liste des modules PHP 7 activés
docker exec -it lemp /usr/local/php-7.1.0/bin/php -m
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dba
dom
exif
fileinfo
filter
ftp
gd
gettext
hash
iconv
intl
json
libxml
mbstring
mcrypt
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
pspell
readline
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
wddx
xml
xmlreader
xmlwriter
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
Accès aux conteneurs
Pendant que votre conteneur lemp s'exécute, il peut être accès par:
sudo docker exec -it lemp /bin/bash
root@8306ab0e404e:/#
Réinitialiser le mot de passe utilisateur MySQL
La commande ci-dessous définira un nouveau mot de passe 123 pour le admin utilisateur:
mysql
mysql> SET PASSWORD FOR 'admin'@'%' = PASSWORD('123');
Redémarrer la pile de lemp
sudo docker exec lemp service supervisor restart