Un environnement de pile LAMP de base construit à l'aide de Docker Compose. Il se compose des éléments suivants :
À l'heure actuelle, nous disposons de plusieurs versions différentes de PHP. Utilisez la version php appropriée si nécessaire :
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
Votre pile LAMP est maintenant prête !! Vous pouvez y accéder via http://localhost
.
Cette Docker Stack est conçue pour le développement local et non pour une utilisation en production.
Ce package est livré avec des options de configuration par défaut. Vous pouvez les modifier en créant un fichier .env
dans votre répertoire racine. Pour faciliter les choses, copiez simplement le contenu du fichier sample.env
et mettez à jour les valeurs des variables d'environnement selon vos besoins.
Les variables de configuration suivantes sont disponibles et vous pouvez les personnaliser en les écrasant dans votre propre fichier .env
.
PHPVERSION Est utilisé pour spécifier la version de PHP que vous souhaitez utiliser. La valeur par défaut est toujours la dernière version de PHP.
PHP_INI Définissez votre modification php.ini
personnalisée pour répondre à vos besoins.
DOCUMENT_ROOT
Il s'agit d'une racine de document pour le serveur Apache. La valeur par défaut est ./www
. Tous vos sites iront ici et seront synchronisés automatiquement.
APACHE_DOCUMENT_ROOT
Valeur du fichier de configuration Apache. La valeur par défaut est /var/www/html.
VHOSTS_DIR
Ceci est pour les hôtes virtuels. La valeur par défaut est ./config/vhosts
. Vous pouvez placer les fichiers de configuration de vos hôtes virtuels ici.
Assurez-vous d'ajouter une entrée au fichier
hosts
de votre système pour chaque hôte virtuel.
APACHE_LOG_DIR
Ceci sera utilisé pour stocker les journaux Apache. La valeur par défaut est ./logs/apache2
.
Pour les utilisateurs d'Apple Silicon : veuillez sélectionner Mariadb comme base de données. Oracle ne construit pas ses conteneurs SQL pour l'architecture arm
BASE DE DONNÉES
Définissez la version de MySQL ou MariaDB que vous souhaitez utiliser.
MYSQL_INITDB_DIR
Lorsqu'un conteneur est démarré pour la première fois, les fichiers de ce répertoire avec les extensions .sh
, .sql
, .sql.gz
et .sql.xz
seront exécutés par ordre alphabétique. Les fichiers .sh
sans autorisation d'exécution de fichier sont recherchés plutôt qu'exécutés. La valeur par défaut est ./config/initdb
.
MYSQL_DATA_DIR
Il s'agit du répertoire de données MySQL. La valeur par défaut est ./data/mysql
. Tous vos fichiers de données MySQL seront stockés ici.
MYSQL_LOG_DIR
Ceci sera utilisé pour stocker les journaux Apache. La valeur par défaut est ./logs/mysql
.
Apache est configuré pour fonctionner sur le port 80. Vous pouvez donc y accéder via http://localhost
.
Par défaut, les modules suivants sont activés.
Si vous souhaitez activer plus de modules, mettez simplement à jour
./bin/phpX/Dockerfile
. Vous pouvez également générer un PR et nous fusionnerons si cela semble bon pour un usage général. Vous devez reconstruire l'image Docker en exécutantdocker compose build
et redémarrer les conteneurs Docker.
Vous pouvez vous connecter au serveur Web à l’aide de la commande docker compose exec
pour effectuer diverses opérations dessus. Utilisez la commande ci-dessous pour vous connecter au conteneur via ssh.
docker compose exec webserver bash
La version installée de php dépend de votre fichier .env
.
Par défaut, les extensions suivantes sont installées. Peut différer pour les versions PHP <7.xx
Si vous souhaitez installer plus d'extensions, mettez simplement à jour
./bin/webserver/Dockerfile
. Vous pouvez également générer un PR et nous fusionnerons si cela semble bon pour un usage général. Vous devez reconstruire l'image Docker en exécutantdocker compose build
et redémarrer les conteneurs Docker.
phpMyAdmin est configuré pour s'exécuter sur le port 8080. Utilisez les informations d'identification par défaut suivantes.
http://localhost:8080/
nom d'utilisateur : root
mot de passe : tigre
Xdebug est installé par défaut et sa version dépend de la version PHP choisie dans le fichier ".env"
.
Versions de Xdebug :
PHP <= 7.3 : Xdebug 2.XX
PHP >= 7.4 : Xdebug 3.XX
Pour utiliser Xdebug vous devez activer les paramètres dans le fichier ./config/php/php.ini
en fonction de la version PHP choisie.
Exemple:
# 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 : vous devez installer l'extension Xdebug "PHP Debug". Une fois installé, accédez à Debug et créez le fichier de lancement afin que votre IDE puisse écouter et fonctionner correctement.
Exemple:
TRÈS IMPORTANT : les pathMappings
dépendent de la façon dont vous avez ouvert le dossier dans VS Code. Chaque dossier a votre propre lancement de configurations, que vous pouvez visualiser dans .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
}
}
]
}
Maintenant, créez un point d'arrêt et exécutez le débogage.
Conseil! Après ces configurations, vous devrez peut-être redémarrer le conteneur.
Il est livré avec Redis. Il fonctionne sur le port par défaut 6379
.
La prise en charge des domaines https
est intégrée mais désactivée par défaut. Il existe 3 façons d'activer et de configurer SSL : https
sur localhost
étant le plus simple. Si vous essayez de recréer un environnement de test aussi proche que possible d'un environnement de production, n'importe quel nom de domaine peut être pris en charge avec plus de configuration.
Remarque : Pour chaque nom de domaine non localhost sur lequel vous souhaitez utiliser https
, vous devrez modifier le fichier hosts de votre ordinateur et pointer le nom de domaine vers 127.0.0.1
. Si vous ne le faites pas, SSL ne fonctionnera pas et vous serez redirigé vers Internet chaque fois que vous tenterez de visiter ce nom de domaine localement.
Pour activer https
sur localhost
(https://localhost), vous devrez :
localhost
:mkcert
, dans le terminal, exécutez mkcert localhost 127.0.0.1 ::1
.cert.pem
et cert-key.pem
.config/ssl
.443
dans config/vhosts/default.conf
. Fait. Désormais, chaque fois que vous allumerez votre conteneur LAMP, https
fonctionnera sur localhost
.
Si vous souhaitez utiliser des noms de domaine normaux pour les tests locaux et avez besoin du support https
, la solution la plus simple est un certificat SSL qui couvre tous les noms de domaine :
mkcert
, dans le terminal, exécutez mkcert example.com "*.example.org" myapp.dev localhost 127.0.0.1 ::1
où vous remplacez tous les noms de domaine et adresses IP par ceux que vous souhaitez prendre en charge.cert.pem
et cert-key.pem
.config/ssl
.443
dans config/vhosts/default.conf
. Fait. Puisque vous avez combiné tous les noms de domaine en un seul certificat, le fichier vhost prendra en charge votre configuration sans avoir besoin de le modifier davantage. Vous pouvez toutefois ajouter des règles spécifiques au domaine si vous le souhaitez. Désormais, chaque fois que vous allumerez votre conteneur LAMP, https
fonctionnera sur tous les domaines que vous avez spécifiés.
Si vous souhaitez que votre environnement de test local corresponde exactement à votre production et que vous avez besoin du support https
, vous pouvez créer un certificat SSL pour chaque domaine que vous souhaitez prendre en charge :
mkcert
, dans le terminal, exécutez mkcert [your-domain-name(s)-here]
en remplaçant la partie crochet par votre nom de domaine.[name]-cert.pem
et [name]-cert-key.pem
en remplaçant la partie entre crochets par un nom unique.config/ssl
.443
du fichier vhost ( config/vhosts/default.conf
), créez de nouvelles règles qui correspondent à votre nom de domaine et aux noms de fichiers de certificat. Fait. Le conteneur LAMP extraira automatiquement tous les certificats SSL dans config/ssl
lors de son démarrage. Tant que vous configurez correctement le fichier vhosts et placez les certificats SSL dans config/ssl
, chaque fois que vous allumez votre conteneur LAMP, https
fonctionnera sur vos domaines spécifiés.
Nous sommes heureux si vous souhaitez créer une pull request ou aider les gens à résoudre leurs problèmes. Si vous souhaitez créer un PR, n'oubliez pas que cette pile n'est pas conçue pour une utilisation en production et que les modifications doivent être adaptées à un usage général et non trop spécialisées.
Veuillez noter que nous avons simplifié la structure du projet de plusieurs branches pour chaque version de PHP à une branche principale centralisée. Veuillez créer votre PR contre la branche principale.
Merci!
Nous voulons permettre aux développeurs de créer rapidement des applications créatives. Par conséquent, nous fournissons un environnement de développement local facile à configurer pour plusieurs frameworks et versions PHP différents. En Production vous devez modifier au minimum les sujets suivants :