Estibador

Configurar un servidor LAMP con Docker

Configurar un servidor LAMP con Docker
En este artículo, le mostraré cómo usar Docker Compose para crear un servidor LAMP para el desarrollo web PHP. Entonces empecemos.

Requerimientos:

Para seguir este artículo, debe tener Docker instalado en su computadora. LinuxHint tiene muchos artículos que puede seguir para instalar Docker en la distribución de Linux que desee si aún no lo tiene instalado. Por lo tanto, 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 de Docker Compose muy fácilmente con el siguiente comando:

$ sudo curl -L "https: // github.com / docker / compose / releases / download / 1.24.1 /
docker-compose - $ (uname -s) - $ (uname -m) "-o / usr / local / bin / docker-compose

NOTA: rizo puede que no esté instalado en su distribución de Linux. Si ese es el caso, puede instalar curl con el siguiente comando:

Ubuntu / Debian / Linux Mint:

$ sudo apt install curl -y

CentOS / RHEL / Fedora:

$ sudo dnf install curl -y

Una vez docker-compose descargado el archivo binario, ejecute el siguiente comando:

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

Ahora, compruebe si docker-compose El comando funciona de la siguiente manera:

$ docker-compose versión

Debería 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, crea un directorio de proyecto ~ / docker / lámpara (digamos) y un html / directorio dentro del directorio del proyecto para mantener los archivos del sitio web (i.mi. php, html, css, js, etc.) como sigue:

$ mkdir -p ~ / docker / lamp / html

Ahora, navega hasta el directorio del proyecto ~ / docker / lámpara como sigue:

$ cd ~ / docker / lámpara

Crear un php.Dockerfile 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 crea una imagen de Docker personalizada a partir de ella.

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

DESDE php: 7.4.3-apache

CORRER

docker-php-ext-install mysqli pdo pdo_mysql

Ahora, crea un docker-compose.yaml archivo en el directorio del proyecto ~ / docker / lámpara y escriba las siguientes líneas en el docker-compose.yaml expediente.

versión: "3.7 "
servicios:
Servidor web:
construir:
dockerfile: php.Dockerfile
contexto: .
reiniciar: siempre
volúmenes:
- "./ html /: / var / www / html / "
puertos:
- "8080: 80"
servidor mysql:
imagen: mysql: 8.0.19
reiniciar: siempre
ambiente:
MYSQL_ROOT_PASSWORD: secreto
volúmenes:
- mysql-datos: / var / lib / mysql
phpmyadmin:
imagen: phpmyadmin / phpmyadmin: 5.0.1
reiniciar: siempre
ambiente:
PMA_HOST: servidor mysql
PMA_USER: root
PMA_PASSWORD: secreto
puertos:
- "5000: 80"
volúmenes:
mysql-datos:

La docker-compose.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.Dockerfile.

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

phpmyadmin el servicio ejecutará el phpmyadmin / phpmyadmin: 5.0.1 imagen (de DockerHub) en otro contenedor de 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 de MySQL, el nombre de usuario y la contraseña, respectivamente, que phpMyAdmin utilizará para conectarse al servidor de base de datos MySQL que se ejecuta como servidor mysql Servicio.

En servidor mysql servicio, todos los contenidos del / var / lib / mysql El directorio se guardará permanentemente en el mysql-datos volumen.'

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

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

Además, cree un índice.php archivo en el html / directorio para probar el servidor LAMP.

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

$ host = "servidor-mysql";
$ usuario = "root";
$ pass = "secreto";
$ db = "aplicación1";
intentar
$ conn = nuevo PDO ("mysql: host = $ host; dbname = $ db", $ usuario, $ pass);
$ conexión-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
 
echo "Conectado con éxito";
captura (PDOException $ e)
echo "Error de conexión:" . $ e-> getMessage ();

?>

Finalmente, el directorio del proyecto ~ / docker / lámpara debe tener el siguiente aspecto:

Inicio del servidor LAMP:

Ahora, para comenzar el Servidor web, servidor mysql y phpmyadmin services, 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 host de Docker 8080 se asigna al puerto TCP del contenedor 80.

Para el phpmyadmin servicio, el puerto de host de 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 Docker.

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

$ ip

En mi caso, la dirección IP de mi host Docker 192.168.20.160. Será diferente para ti. Por lo tanto, asegúrese de reemplazarlo por el suyo a partir de ahora.

Prueba del servidor LAMP:

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 host Docker o visite http: // 192.168.20.160: 5000 desde cualquier otra computadora en la red.

phpMyAdmin 5 debería cargarse en su navegador web.

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

Ahora, visite http: // localhost: 8080 desde su host 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 exitosamente mensaje. Significa que PHP está funcionando y el servidor de base de datos MySQL es accesible desde el Servidor web envase. Entonces, técnicamente, el servidor LAMP es completamente funcional.

Detención del servidor LAMP:

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

$ docker-compose abajo

La Servidor web, servidor mysql y phpmyadmin los servicios deben detenerse.

Limpieza de datos del servidor MySQL:

Si desea eliminar todos los datos y la configuración de la base de datos MySQL, debe eliminar el mysql-datos volumen.

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

$ docker volume ls

Puedes quitar el volumen lamp_mysql-data con el siguiente comando:

$ docker volumen rm lamp_mysql-data

Entonces, así es como configura un servidor LAMP con Docker. Gracias por leer este artículo.

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

Los mejores juegos de línea de comandos para Linux
La línea de comandos no es solo su mayor aliado cuando usa Linux, también puede ser la fuente de entretenimiento porque puede usarla para jugar muchos...
Las mejores aplicaciones de mapeo de gamepad para Linux
Si te gusta jugar juegos en Linux con un gamepad en lugar de un sistema de entrada de teclado y mouse típico, hay algunas aplicaciones útiles para ti....
Herramientas útiles para jugadores de Linux
Si le gusta jugar juegos en Linux, es probable que haya utilizado aplicaciones y utilidades como Wine, Lutris y OBS Studio para mejorar la experiencia...