Un entorno de pila LAMP básico creado con Docker Compose. Consta de lo siguiente:
A partir de ahora, tenemos varias versiones PHP diferentes. Utilice la versión de PHP adecuada según sea necesario:
docker compose up -d
. git clone https://github.com/sprintcube/docker-compose-lamp.git
cd docker-compose-lamp/
cp sample.env .env
// modify sample.env as needed
docker compose up -d
// visit localhost
¡¡Tu pila LAMP ya está lista!! Puede acceder a él a través de http://localhost
.
Este Docker Stack está diseñado para desarrollo local y no para uso en producción.
Este paquete viene con opciones de configuración predeterminadas. Puede modificarlos creando un archivo .env
en su directorio raíz. Para hacerlo más fácil, simplemente copie el contenido del archivo sample.env
y actualice los valores de las variables de entorno según sus necesidades.
Hay las siguientes variables de configuración disponibles y puede personalizarlas sobrescribiéndolas en su propio archivo .env
.
PHPVERSION Se utiliza para especificar qué versión de PHP desea utilizar. El valor predeterminado siempre es la última versión de PHP.
PHP_INI Defina su modificación personalizada php.ini
para cumplir con sus requisitos.
DOCUMENT_ROOT
Es una raíz de documentos para el servidor Apache. El valor predeterminado para esto es ./www
. Todos sus sitios irán aquí y se sincronizarán automáticamente.
APACHE_DOCUMENT_ROOT
Valor del archivo de configuración de Apache. El valor predeterminado para esto es /var/www/html.
VHOSTS_DIR
Esto es para hosts virtuales. El valor predeterminado para esto es ./config/vhosts
. Puede colocar los archivos de configuración de sus hosts virtuales aquí.
Asegúrese de agregar una entrada al archivo
hosts
de su sistema para cada host virtual.
APACHE_LOG_DIR
Esto se utilizará para almacenar registros de Apache. El valor predeterminado para esto es ./logs/apache2
.
Para usuarios de Apple Silicon: seleccione Mariadb como base de datos. Oracle no construye sus contenedores SQL para la arquitectura arm
BASE DE DATOS
Defina qué versión de MySQL o MariaDB le gustaría utilizar.
MYSQL_INITDB_DIR
Cuando se inicia un contenedor por primera vez, los archivos de este directorio con las extensiones .sh
, .sql
, .sql.gz
y .sql.xz
se ejecutarán en orden alfabético. Los archivos .sh
sin permiso de ejecución de archivos se obtienen en lugar de ejecutarse. El valor predeterminado para esto es ./config/initdb
.
MYSQL_DATA_DIR
Este es el directorio de datos de MySQL. El valor predeterminado para esto es ./data/mysql
. Todos sus archivos de datos MySQL se almacenarán aquí.
MYSQL_LOG_DIR
Esto se utilizará para almacenar registros de Apache. El valor predeterminado para esto es ./logs/mysql
.
Apache está configurado para ejecutarse en el puerto 80. Por lo tanto, puede acceder a él a través de http://localhost
.
De forma predeterminada, los siguientes módulos están habilitados.
Si desea habilitar más módulos, simplemente actualice
./bin/phpX/Dockerfile
. También puede generar un PR y lo fusionaremos si parece bueno para fines generales. Debe reconstruir la imagen de la ventana acoplable ejecutandodocker compose build
y reiniciando los contenedores de la ventana acoplable.
Puede conectarse al servidor web utilizando el comando docker compose exec
para realizar diversas operaciones en él. Utilice el siguiente comando para iniciar sesión en el contenedor a través de ssh.
docker compose exec webserver bash
La versión instalada de php depende de su archivo .env
.
De forma predeterminada, se instalan las siguientes extensiones. Puede diferir para las versiones de PHP <7.xx
Si desea instalar más extensiones, simplemente actualice
./bin/webserver/Dockerfile
. También puede generar un PR y lo fusionaremos si parece bueno para fines generales. Debe reconstruir la imagen de la ventana acoplable ejecutandodocker compose build
y reiniciando los contenedores de la ventana acoplable.
phpMyAdmin está configurado para ejecutarse en el puerto 8080. Utilice las siguientes credenciales predeterminadas.
http://localhost:8080/
nombre de usuario: raíz
contraseña: tigre
Xdebug viene instalado por defecto y su versión depende de la versión de PHP elegida en el archivo ".env"
.
Versiones de Xdebug:
PHP <= 7.3: Xdebug 2.XX
PHP >= 7.4: Xdebug 3.XX
Para utilizar Xdebug es necesario habilitar la configuración en el archivo ./config/php/php.ini
según la versión PHP elegida.
Ejemplo:
# Xdebug 2
#xdebug.remote_enable=1
#xdebug.remote_autostart=1
#xdebug.remote_connect_back=1
#xdebug.remote_host = host.docker.internal
#xdebug.remote_port=9000
# Xdebug 3
#xdebug.mode=debug
#xdebug.start_with_request=yes
#xdebug.client_host=host.docker.internal
#xdebug.client_port=9003
#xdebug.idekey=VSCODE
Xdebug VS Code: tienes que instalar la extensión Xdebug "PHP Debug". Después de la instalación, vaya a Depurar y cree el archivo de inicio para que su IDE pueda escuchar y funcionar correctamente.
Ejemplo:
MUY IMPORTANTE: las pathMappings
dependen de cómo haya abierto la carpeta en VS Code. Cada carpeta tiene su propia configuración de inicio, que puede ver en .vscode/launch.json
{
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
// "port": 9000, // Xdebug 2
"port" : 9003 , // Xdebug 3
"pathMappings" : {
// "/var/www/html": "${workspaceFolder } /www" // if you have opened VSCODE in root folder
"/var/www/html" : " ${workspaceFolder} " // if you have opened VSCODE in ./www folder
}
}
]
}
Ahora, cree un punto de interrupción y ejecute la depuración.
¡Consejo! Después de estas configuraciones, es posible que deba reiniciar el contenedor.
Viene con Redis. Se ejecuta en el puerto predeterminado 6379
.
La compatibilidad con dominios https
está integrada pero deshabilitada de forma predeterminada. Hay tres formas de habilitar y configurar SSL; https
en localhost
es el más fácil. Si está intentando recrear un entorno de prueba lo más parecido posible a un entorno de producción, cualquier nombre de dominio puede ser compatible con más configuración.
Aviso: Para cada nombre de dominio que no sea localhost en el que desee utilizar https
, deberá modificar el archivo de hosts de su computadora y apuntar el nombre de dominio a 127.0.0.1
. Si no lo hace, SSL no funcionará y será redirigido a Internet cada vez que intente visitar ese nombre de dominio localmente.
Para habilitar https
en localhost
(https://localhost), necesitará:
localhost
:mkcert
, en la terminal ejecute mkcert localhost 127.0.0.1 ::1
.cert.pem
y cert-key.pem
respectivamente.config/ssl
.443
en config/vhosts/default.conf
. Hecho. Ahora, cada vez que enciendas tu contenedor LAMP, https
funcionará en localhost
.
Si desea utilizar nombres de dominio normales para pruebas locales y necesita soporte https
, la solución más sencilla es un certificado SSL que cubra todos los nombres de dominio:
mkcert
, en la terminal ejecute mkcert example.com "*.example.org" myapp.dev localhost 127.0.0.1 ::1
donde reemplaza todos los nombres de dominio y direcciones IP por los que desea admitir.cert.pem
y cert-key.pem
respectivamente.config/ssl
.443
en config/vhosts/default.conf
. Hecho. Dado que combinó todos los nombres de dominio en un solo certificado, el archivo vhost admitirá su configuración sin necesidad de modificarlo más. Sin embargo, puede agregar reglas específicas del dominio si lo desea. Ahora, cada vez que enciendas tu contenedor LAMP, https
funcionará en todos los dominios que hayas especificado.
Si desea que su entorno de pruebas local coincida exactamente con su producción y necesita compatibilidad con https
, puede crear un certificado SSL para cada dominio que desee admitir:
mkcert
, en la terminal ejecute mkcert [your-domain-name(s)-here]
reemplazando la parte del corchete con su nombre de dominio.[name]-cert.pem
y [name]-cert-key.pem
reemplazando la parte del corchete con un nombre único.config/ssl
.443
del archivo vhost ( config/vhosts/default.conf
), cree nuevas reglas que coincidan con su nombre de dominio y los nombres de archivo de certificado. Hecho. El contenedor LAMP extraerá automáticamente cualquier certificado SSL en config/ssl
cuando se inicie. Siempre que configure el archivo vhosts correctamente y coloque los certificados SSL en config/ssl
, cada vez que encienda su contenedor LAMP, https
funcionará en sus dominios especificados.
Estaremos encantados si desea crear una solicitud de extracción o ayudar a las personas con sus problemas. Si desea crear un PR, recuerde que esta pila no está diseñada para uso en producción y que los cambios deben ser buenos para fines generales y no demasiado especializados.
Tenga en cuenta que simplificamos la estructura del proyecto de varias ramas para cada versión de PHP a una rama maestra centralizada. Cree su PR contra la rama maestra.
¡Gracias!
Queremos capacitar a los desarrolladores para que creen rápidamente aplicaciones creativas. Por lo tanto, proporcionamos un entorno de desarrollo local fácil de configurar para varios marcos y versiones de PHP diferentes. En Producción deberás modificar como mínimo los siguientes temas: