Configure un servidor de lámpara con Docker

Configure un servidor de lámpara con Docker
En este artículo, le mostraré cómo usar Docker Compose para crear un servidor de lámparas para el desarrollo web de PHP. Entonces empecemos.

Requisitos:

Para seguir este artículo, debe tener instalado Docker en su computadora. Linuxhint tiene muchos artículos que puede seguir para instalar Docker en su distribución de Linux deseada si aún no lo tiene instalado. Entonces, asegúrese de verificar Linuxhint.com en caso de que tenga problemas para instalar Docker.

Instalación de Docker Compose:

Puede descargar el archivo binario Docker Compose muy fácilmente con el siguiente comando:

$ sudo curl -l "https: // github.com/docker/compose/comunes/descargar/1.24.1/
Docker-Compose-$ (uname -s)-$ (uname -m) "-o/usr/local/bin/docker-composa

NOTA: rizo No se puede instalar en su distribución de Linux. Si ese es el caso, puede instalar Curl con el siguiente comando:

Ubuntu/Debian/Linux Mint:

$ sudo apt instalación curl -y

Centos/Rhel/Fedora:

$ sudo dnf instalación curl -y

Una vez compuesto de acopolador El archivo binario se descarga, ejecute el siguiente comando:

$ sudo chmod +x/usr/local/bin/docker-compose

Ahora, verifique si compuesto de acopolador El comando está funcionando de la siguiente manera:

$ Docker-Compose Version

Debe imprimir la información de la versión como se muestra en la captura de pantalla a continuación.

Configuración de Docker Compose para el proyecto:

Ahora, cree un directorio de proyecto ~/docker/lámpara (Digamos) y un html/ directorio dentro del directorio del proyecto para mantener los archivos del sitio web (yo.mi. PHP, HTML, CSS, JS, etc.) como sigue:

$ mkdir -p ~/docker/lamp/html

Ahora, navegue al directorio del proyecto ~/docker/lámpara como sigue:

$ CD ~/Docker/Lámpara

Crear un php.Dockfile En el directorio del proyecto ~/docker/lámpara. Este es un Dockerfile que habilita las extensiones MySqli y PDO PHP en el PHP: 7.4.3-apache Imagen de Docker Hub y construye una imagen de Docker personalizada a partir de él.

El contenido del php.Dockfile se da a continuación.

De PHP: 7.4.3-apache

CORRER

Docker-Php-Ext-Install MySQLI PDO PDO_MYSQL

Ahora, crea un compuesto de acopolador.yaml Archivo en el directorio del proyecto ~/docker/lámpara y escriba las siguientes líneas en el compuesto de acopolador.yaml archivo.

Versión: "3.7 "
servicios:
Servidor web:
construir:
Dockerfile: PHP.Dockfile
contexto: .
reiniciar: siempre
Volúmenes:
- "./html/:/var/www/html/"
Puertos:
- "8080: 80"
mysql-server:
Imagen: MySQL: 8.0.19
reiniciar: siempre
ambiente:
Mysql_root_password: secreto
Volúmenes:
- mysql-data:/var/lib/mysql
phpmyadmin:
Imagen: phpmyadmin/phpmyadmin: 5.0.1
reiniciar: siempre
ambiente:
PMA_HOST: mysql-server
PMA_USER: raíz
PMA_Password: secreto
Puertos:
- "5000: 80"
Volúmenes:
Data mysql:

El compuesto de acopolador.yaml El archivo debe verse de la siguiente manera.

Aquí, he creado 3 servicios Servidor web, servidor mysql y phpmyadmin.

Servidor web El servicio ejecutará una imagen de Docker personalizada como se define en php.Dockfile.

servidor mysql el servicio ejecutará el mysql: 8.0.19 Imagen (de Dockerhub) en un contenedor Docker.

phpmyadmin el servicio ejecutará el phpmyadmin/phpmyadmin: 5.0.1 Imagen (de Dockerhub) en otro contenedor Docker.

En servidor mysql servicio, el Mysql_root_password La variable de entorno se utiliza para establecer el raíz Contraseña de MySQL.

En phpmyadmin servicio, el PMA_HOST, PMA_USER, PMA_PASSWORD Las variables de entorno se utilizan para establecer el nombre de host MySQL, el nombre de usuario y la contraseña, respectivamente, que PhPMyadmin usará para conectarse al servidor de base de datos MySQL que se ejecuta como servidor mysql servicio.

En servidor mysql servicio, todo el contenido del /var/lib/mysql El directorio se guardará permanentemente en el mysql-data volumen.'

En el Servidor web servicio, el puerto de contenedor 80 (a la derecha) se asigna al puerto de host de Docker 8080 (izquierda).'

En el phpmyadmin servicio, el puerto de contenedor 5000 (a la derecha) se asigna al puerto de host de Docker 80 (izquierda).

Además, crea un índice.php archivo en el html/ directorio para probar el servidor de lámparas.

El contenido del índice.php Archivo en mi caso,

$ host = "mysql-server";
$ user = "root";
$ pass = "secreto";
$ db = "app1";
intentar
$ Conn = new PDO ("mysql: host = $ host; dbname = $ db", $ user, $ pass);
$ conn-> setAttribute (pdo :: att_errmode, pdo :: errmode_exception);
Echo "conectado con éxito";
catch (pdoException $ e)
echo "Conexión fallida:" . $ e-> getMessage ();

?>

Finalmente, el directorio del proyecto ~/docker/lámpara Debe verse de la siguiente manera:

Iniciar el servidor de la lámpara:

Ahora, para comenzar el Servidor web, servidor mysql y phpmyadmin Servicios, ejecute el siguiente comando:

$ Docker -Compose Up -d

Todos los servicios deben comenzar en segundo plano.

Para ver cómo se asignan los puertos, ejecute el siguiente comando:

$ Docker-Compose PS

Como puede ver, para el Servidor web Servicio, el puerto de anfitrión Docker 8080 se asigna al puerto TCP del contenedor 80.

Para el phpmyadmin Servicio, el puerto de anfitrión Docker 5000 se asigna al puerto TCP del contenedor 80.

Encontrar la dirección IP del host de Docker:

Si desea acceder al servidor LAMP desde otras computadoras en su red, debe conocer la dirección IP de su host de Docker.

Para encontrar la dirección IP de su host de Docker, ejecute el siguiente comando:

$ IP

En mi caso, la dirección IP de mi host de Docker 192.168.20.160. Será diferente para ti. Entonces, asegúrese de reemplazarlo con el tuyo de ahora en adelante.

Probar el servidor de la lámpara:

Ahora, puede acceder a PhPMyadmin 5 y al servidor web desde un navegador web.

Para acceder a PhPMyadmin 5, abra un navegador web y visite http: // localhost: 5000 desde su anfitrión Docker o visite http: // 192.168.20.160: 5000 de cualquier otra computadora en la red.

PhpMyadmin 5 debe cargarse en su navegador web.

Ahora, crea un app1 Base de datos MySQL de PhPMyAdmin.

Ahora, visite http: // localhost: 8080 de su host de docker o http: // 192.168.20.160: 8080 desde cualquier otra computadora en su red para acceder al servidor web.

Deberías ver el Conectado con éxito mensaje. Significa que el PHP funciona y se puede acceder al servidor de base de datos MySQL desde el Servidor web envase. Entonces, técnicamente, el servidor de la lámpara es completamente funcional.

Detener el servidor de la lámpara:

Para detener el Servidor web, servidor mysql y phpmyadmin Servicios, ejecute el siguiente comando:

$ Docker-Compose Down

El Servidor web, servidor mysql y phpmyadmin Los servicios deben detenerse.

Limpiar los datos del servidor MySQL:

Si desea eliminar todos los datos y configuraciones de la base de datos MySQL, debe eliminar el mysql-data volumen.

Puede encontrar el nombre real del volumen con el siguiente comando:

$ Docker Volumen LS

Puedes eliminar el volumen lamp_mysql-data Con el siguiente comando:

$ Docker Volumen RM LAMP_MYSQL DATA

Entonces, así es como configuras un servidor de lámparas con Docker. Gracias por leer este artículo.

Como puede ver, el volumen para eliminar es lamp_mysql-data.