Maison  >  Article  >  développement back-end  >  Utilisez Docker pour créer un environnement lnmp de service intégré

Utilisez Docker pour créer un environnement lnmp de service intégré

不言
不言original
2018-04-09 15:14:231880parcourir

Cet article présente principalement l'utilisation de docker pour créer un environnement lnmp de service intégré. Maintenant, je le partage avec tout le monde et je fournis une référence aux amis dans le besoin.

Après avoir maîtrisé les commandes de base de Docker, je voulais également utiliser Docker pour créer un véritable environnement de support, j'ai donc utilisé mon environnement lnmp le plus couramment utilisé pour les tests. L'ordre d'exécution de l'environnement de support est mysql->php->nginx. La raison sera expliquée ci-dessous.

1. MySQL

Les images après lesquelles le service s'exécute sont toutes extraites de l'image officielle, sauf indication contraire. Pour les petites entreprises et les développeurs individuels, le miroir officiel. est plus sûr et économise des soucis et des efforts.

# 拉取镜像
$ 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 \

Ce qui suit expliquera tour à tour chaque paramètre de l'opération ci-dessus

  1. -- name : opération spécifiée Le nom du conteneur

  2. -d : Exécuter le conteneur en arrière-plan

  3. -p : Le mappage de port entre le l'hôte et le conteneur

  4. -v : Montez le conteneur sur le mappage du répertoire local

  5. -e : Spécifiez la variable d'environnement pour exécuter le conteneur

2.PHP

Extrayez l'image officielle php-fpm et téléchargez-la en fonction de la version PHP dont vous avez besoin. Cependant, certaines sont couramment utilisées. Les packages PHP ne sont pas inclus dans l'image officielle, nous devons donc utiliser le fichier docker pour le reconstruire. Ce qui suit consiste à installer les deux packages d'extension php mysqli et pdo dans le Dockerfile.

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"]

Exécutez php-fpm

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

Faites attention au --link parmi les paramètres. Ce paramètre est très utile pour la connexion entre les conteneurs. Il ajoutera une résolution de nom de domaine dans /etc/hosts du conteneur actuel. Grâce à ce nom de domaine, vous pourrez vous connecter au. conteneur correspondant, par exemple, dans ce qui précède Dans php-fpm, créez un lien vers mysql, puis le programme php dans php-fpm peut se connecter au conteneur mysql qui vient d'être exécuté via la chaîne mysql, et vous pouvez voir les enregistrements d'analyse à l'intérieur par cat /etc/hosts.

172.17.0.2 mysql b41d2569c06d

3.Nginx

Exécutez nginx via la commande suivante, car nginx doit Le port pass 127.0 .0.1:9000 est utilisé pour se connecter à php-fpm afin d'analyser les fichiers php, vous devez donc vous connecter à php-fpm via un lien.

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

Il convient de noter que lorsque nginx analyse un fichier, si la requête est un fichier statique, il renverra directement le contenu dans le fichier conteneur nginx au client. Si la demande concerne un fichier php, il transmettra la demande à php-fpm, puis php-fpm ira sur l'ordinateur local pour trouver le fichier php à analyser, qui est le fichier. du conteneur php-fpm lui-même.

Après avoir exécuté les trois commandes de démarrage de service ci-dessus en séquence, nous pouvons créer notre lnmp commun. Cependant, il est un peu gênant d'exécuter la commande ci-dessus à chaque fois que vous exécutez le service. Nous pouvons utiliser la commande docker-compose pour une gestion centralisée.

Pour utiliser docker-compose

il vous suffit de créer un répertoire lnmp, puis de créer docker-compose.yml dans le répertoire lnmp et de saisir la commande suivante pour gérer l'environnement intégré.
En fait, vous pouvez facilement connaître la signification de chaque commande grâce au nom de la commande.

version : Puisque docker-compose est un outil de développement, il est très probable que les instructions pour chaque version soient différentes, donc la version applicable de l'instruction docker-compose doit être déclarée au début.

image : désigne l'image à travers laquelle s'exécute le service.

depends_on : Ceci indique de quel logiciel dépend le logiciel. En fait, il déclare également l'ordre dans lequel le logiciel s'exécute.

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"

Exécutez ensuite les commandes liées à la composition dans ce répertoire lnmp pour le contrôler.

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

Recommandations associées :

Création d'un environnement de développement PHP dans Docker


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn