Compartir tecnología

【Docker-compose】 Cree un entorno php

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Orquestación de contenedores Docker-compose

1. ¿Qué es?

Compose es una herramienta de software lanzada por Docker Company, que puede administrar múltiples contenedores Docker para formar una aplicación. Debe definir un archivo de configuración docker-compose.yml en formato YAML y escribir las relaciones de llamada entre múltiples contenedores.Luego, con un solo comando, puedes iniciar/detener estos contenedores al mismo tiempo.

  • · Docker-Compose es el proyecto oficial de código abierto de Docker, responsable de realizar la orquestación rápida de los clústeres de contenedores de Docker.

2. ¿Qué puedes hacer?

Docker recomienda que solo ejecutemos un servicio en cada contenedor. Debido a que el contenedor Docker en sí consume muy pocos recursos, es mejor separar cada servicio por separado. ¿Pero entonces nos enfrentamos a otro problema?

Si necesito implementar varios servicios al mismo tiempo, ¿tengo que escribir un Dockerfile separado para cada servicio y luego crear la imagen y el contenedor? Esto es agotador, por lo que Docker nos proporciona oficialmente la herramienta de implementación multiservicio Docker-Compose. .

Por ejemplo, para implementar un proyecto de microservicio web, además del contenedor de servicios web en sí, a menudo es necesario agregar el contenedor de servicios mysql de la base de datos back-end, el servidor redis, el centro de registro eureka e incluso los contenedores de equilibrio de carga, etc. . . . . .

Compose permite a los usuarios definir un conjunto de contenedores de aplicaciones asociados como un proyecto a través de un archivo de plantilla docker-compose.yml separado (formato YAML).

Puede definir fácilmente una aplicación de contenedores múltiples con un archivo de configuración y luego usar un solo comando para instalar todas las dependencias de la aplicación y completar la compilación. Docker-Compose resuelve el problema de cómo gestionar y organizar contenedores.

3. Adónde ir

  • Sitio web oficial · https://docs.docker.com/compose/compose-file/compose-file-v3/
  • https://docs.docker.com/compose/install/

Dirección de descarga acelerada

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  • 1

Agregar permisos ejecutables

chmod +x /usr/local/bin/docker-compose
  • 1

Compruebe si la instalación es exitosa

docker-compose --version
  • 1
  • desinstalar

    sudo rm / usr/ local/ bin/docker-compose
    
    • 1

4. Redactar conceptos básicos

  • Tres pasos para usar Compose

    Escriba Dockerfile para definir cada aplicación de microservicio y cree el archivo de imagen correspondiente

    Utilice docker-compose.yml para definir una unidad de negocio completa y organizar varios servicios de contenedor en la aplicación general.

    Finalmente, ejecute el comando docker-compose up para iniciar y ejecutar la aplicación completa para completar la implementación con un solo clic y conectarse.

  • Redactar comandos comunes

    docker-compose -h # Ver ayuda

    docker-compose up # Inicia todos los servicios de docker-compose

    docker-compose up -d # Inicia todos los servicios de docker-compose y ejecútelos en segundo plano

    docker-compose down # Detener y eliminar contenedores, redes, volúmenes e imágenes.

    La identificación del servicio en docker-compose exec yml # Ingrese dentro de la instancia del contenedor

    docker-compose exec docker-compose.yml archivo escrito id de servicio /bin/bash

    docker-compose ps # Muestra todos los contenedores en ejecución actualmente orquestados por docker-compose

    docker-compose top # Muestra los procesos del contenedor actual orquestados por docker-compose

    ID de servicio en los registros de Docker-Compose yml # Ver el registro de salida del contenedor

    docker-compose config # Verificar configuración

    docker-compose config -q # Verifique la configuración y la salida solo si hay problemas

    reinicio de docker-compose # Reiniciar el servicio

    docker-compose start # Iniciar el servicio

    docker-compose stop # Detener el servicio

instalación del comando docker-machine

 base=https://get.daocloud.io/docker/machine/releases/download/v0.14.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo install /tmp/docker-machine /usr/local/bin/docker-machine
  • 1
  • 2
  • 3

5. Combate práctico: configure el servidor dns en Linux y cree el entorno lemp (Nginx + MySQL (MariaDB) + PHP)

Requerir

1) En la máquina virtual Linux, configure la dirección IP en 192.168.90.215 (x son los últimos 3 dígitos de su identificación de estudiante, y la especifica usted mismo) y la máquina virtual podrá acceder a Internet normalmente;

2) Configure el servidor DNS, el dominio es cr.com (abc son las iniciales de su nombre), una vez completada la configuración, use nslookup para verificar la resolución directa e inversa;

3) Configure LEMP (es decir, Nginx + MySQL (MariaDB) + PHP) y acceda a www.cr.com (abc son sus iniciales) a través del host real para acceder al LEMP integrado. (No puede modificar el archivo de hosts para la resolución local, pero debe usar su propio DNS configurado)

6. Configurar la resolución DNS

Primero configure la IP estática para Linux http://alleniverrui.top/archives/linux-pei-zhi-jing-tai-ip (si no se puede abrir, cambie la dirección a continuación)

//hacer

Edite el archivo /etc/named.conf

vim /etc/named.conf
  • 1

Cambie los valores de escucha y consulta a cualquier

Configure DNS para resolver cr.com en 192.168.90.215

vim /etc/named.rfc1912.zones 
  • 1

Agregar al final del archivo

zone "cr.com" IN {
   type master;
   file "cr.com.zone";
  allow-update { none; };
};
zone "215.90.168.192.in-addr.arpa" IN {
        type master;
        file "com.cr.loop";
        allow-update { none; };
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

:wq para guardar

Edite el archivo de configuración correspondiente vim /var/named/com.cr.loop

Añade lo siguiente

$TTL 1D
@       IN SOA  cr.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       127.0.0.1
        AAAA    ::1
        PTR     cr.com.
        NS      ns.cr.com.
ns      A       192.168.90.215
201     PTR     www.cr.com.
201     PTR     email.cr.com.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Editar vim /var/named/cr.com.zone

Añade lo siguiente

$TTL 1D
@       IN SOA  cr.com. rname.invalid. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
        NS      @
        A       192.168.90.215
        AAAA    ::1
        NS      ns.server.com.
ns      IN A    192.168.90.215
www     IN A    192.168.90.215
email   IN A    192.168.90.215
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

Reiniciar dns

systemctl restart named
  • 1

Ver estado de DNS

systemctl status named
  • 1

Comenzó con éxito

Análisis directo de nslookup cr.com

Análisis inverso nslookup 192.168.90.215

Configurar lemp

Escriba el archivo docker-compose.yml en /mydocker/lemp

vim /mydocker/lemp/docker-compose.yml complete el siguiente contenido

nginx:
    build: ./nginx/
    ports:
        - 80:80
    links:
        - php
    volumes_from:
        - app

php:
    build: ./php/
    expose:
        - 9000
    links:
        - mysql
    volumes_from:
        - app

app:
    image: php:7.0-fpm
    volumes:
        - .:/var/www/html
    command: "true"

mysql:
    image: mysql:latest
    volumes_from:
        - data
    environment:
        MYSQL_ROOT_PASSWORD: secret
        MYSQL_DATABASE: bookmarks
        MYSQL_USER: cr
        MYSQL_PASSWORD: cr123

data:
    image: mysql:latest
    volumes:
        - /var/lib/mysql
    command: "true"

phpmyadmin:
    image: phpmyadmin/phpmyadmin
    ports:
        - 8080:80
    links:
        - mysql
    environment:
        PMA_HOST: mysql
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

Cree nginx/Dockerfile en /mydocker/lemp/

llenar

FROM nginx:latest

COPY ./default.conf /etc/nginx/conf.d/default.conf
  • 1
  • 2
  • 3

Crear default.conf

Complete el siguiente contenido

 

server {

  listen 80 default_server;

  root /var/www/html;

  index index.html index.php;

 

  charset utf-8;

 

  location / {

try_files $uri $uri/ /index.php?$query_string;

  }

 

  location = /favicon.ico { access_log off; log_not_found off; }

  location = /robots.txt  { access_log off; log_not_found off; }

 

  access_log off;

  error_log  /var/log/nginx/error.log error;

 

  sendfile off;

 

  client_max_body_size 100m;

 

  location ~ .php$ {

  fastcgi_split_path_info ^(.+.php)(/.+)$;

  fastcgi_pass php:9000;

 fastcgi_index index.php;

 include fastcgi_params;

 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

fastcgi_intercept_errors off;

fastcgi_buffer_size 16k;

 fastcgi_buffers 4 16k;

  }

 

  location ~ /.ht {

 deny all;

  }

}

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75

Crear php/Dockerfile en /mydocker/lemp/

llenar

FROM php:7.0-fpm

RUN docker-php-ext-install mysqli

 
  • 1
  • 2
  • 3
  • 4
  • 5

Orquestar contenedores acoplables

 docker-compose up -d 
  • 1

Docker ps para ver el estado de ejecución del contenedor

iniciado con éxito

Esta máquina accede al entorno php y al entorno nginx a través de IP

Acceso exitoso

Configure el servidor DNS local como una máquina virtual, que es 192.168.90.215

Abra la ventana cmd y realice una prueba de ping en cr.com

Se hizo ping con éxito

Acceda al entorno php creado a través del nombre de dominio

Modificar el archivo de configuración de nginx

El nombre de dominio final accede directamente al sitio web