Un environnement de développement basique pour l’apprentissage de PHP

Overview

Docker Compose LEMP Stack

This repository contains a little docker-compose configuration to start a LEMP (Linux, Nginx, MariaDB, PHP, Adminer, Node) stack.

It is based on https://github.com/stevenliebregt/docker-compose-lemp-stack

I use it only as a base environment to teach PHP in a School located in Liège, Belgium

Détails

Les versions les plus récentes disponibles au moment de la construction des conteneurs sont toujours utilisées.

Le moteur de base de données utilisé est MariaDB. Ceci est non seulement une évolution souhaitable par rapport à MySQL mais aussi une exigence de compatibilité pour les Mac M1+ à l’heure où j’écris.

PHP est installé avec Composer, mais aussi avec git, zip, nodejs et npm 🎉 . Ces deux derniers packages sont surtout là pour le cas où vous auriez besoin d’utiliser une dépendance front, mais dans le cadre du cours, la probabilité est assez faible.

Le dossier dans lequel vous devez coder votre application PHP est app/, situé à la racine de ce repo une fois cloné sur votre machine.

Configuration

UTILISATEURS DE WINDOWS Si vous avez fait le choix regrettable de travailler avec une machine qui n’est pas équipée d’un système Unix/Linux, tout n’est pas perdu. Pour faire fonctionner Docker vous avez dû activer WSL2 et installer Ubuntu comme sous-système Linux sur votre Windows. Ouf. Les commandes qui suivent sont à taper dans le terminal d’Ubuntu. Pour rappel cd /mnt/LETTRE_DE_DISQUE/Users/VOTRE_NOM/PATH_VERS_VOTRE_PROJET vous placera dans le bon répertoire pour la suite des opérations.

Le fichier docker-compose utilise une variable Unix (PWD) qui n’est pas reconnue dans un interpréteur de commande WINDOWS. Pensez-y !

La configuration de Nginx est config/nginx/.

Pour plus de facilité, un fichier d’environnement, .env est utilisé. Il permet de définir certaines valeurs à réutiliser dans le `docker-compose.yml, comme par exemple, le nom du projet et les informations de connexion à la DB.

Key Description
APP_NAME Le nom à utiliser pour nommer les conteneurs.
MYSQL_ROOT_PASSWORD Le mot de passe pour l’utilisateur root du SGBD.

Usage

Pour l’utiliser :

Clonez ce dépôt.

git clone https://github.com/hepl-pwcs/dev-environnement.git.

Démarrez les serveurs.

Pour démarrer les serveurs, vous devez instancier les conteneurs listés et configurés dans le fichier docker-compose.yml : docker-compose up.

À ce moment, vous avez accès au serveur via http://localhost

J’ai ajouté l’application de gestion de base de données Adminer à la stack d’origine. Elle est disponible à l’adresse http://localhost:8080. Notez qu’elle utilise son propre moteur PHP, en version 7.4. C’est sans importance pour vos développements qui peuvent se faire pour la dernière version de PHP disponible.

L’accès à MariaDB par une application externe (TablePlus, Terminal, PHPStorm, etc.) est possible sur l’adresse locale, port 3306, comme d’habitude.

Un terminal ?

Attention, le terminal de votre machine tape des commandes dans le contexte de votre machine. Sur ma machine par exemple, je n’ai pas installé PHP, COMPOSER, NGINX, ou MARIADB, et j’interagis pourtant via le terminal avec tous ces logiciels. Alors, comment ?

Si vous avez besoin de taper des commandes dans le terminal d’un des conteneurs, dans votre terminal, tapez :

docker exec -ti {CONTAINER_NAME} [COMMAND]

Vous devez remplacer {CONTAINER_NAME} par le nom du conteneur avec lequel vous voulez interagir.

  • {APP_NAME}-php
  • {APP_NAME}-nginx
  • {APP_NAME}-mariadb

Par exemple si votre application est nommée myapp dans le fichier d’environnement, tapez docker exec -it myapp-php composer require nesbot/carbon pour installer Carbon à l’aide de composer.

La commande précédente permet d’envoyer une commande vers l’interpréteur de commandes du conteneur, mais vous restez dans votre terminal. Pour taper plusieurs commandes d’affilée, vous devez refaire toute la commande précédente ou alors, si vous souhaitez garder le terminal du conteneur ouvert, vous pouvez utiliser docker exec -it {CONTAINER_NAME} /bin/sh

Par exemple,

docker exec -it myapp-mariadb /bin/sh
mariadb --user=root --password=rootpass db_name
You might also like...
A sampling profiler for PHP written in PHP, which reads information about running PHP VM from outside of the process.

Reli Reli is a sampling profiler (or a VM state inspector) written in PHP. It can read information about running PHP script from outside of the proces

PHP Meminfo is a PHP extension that gives you insights on the PHP memory content

MEMINFO PHP Meminfo is a PHP extension that gives you insights on the PHP memory content. Its main goal is to help you understand memory leaks: by loo

A sampling profiler for PHP written in PHP, which reads information about running PHP VM from outside of the process.

Reli Reli is a sampling profiler (or a VM state inspector) written in PHP. It can read information about running PHP script from outside of the proces

A multithreaded application server for PHP, written in PHP.

appserver.io, a PHP application server This is the main repository for the appserver.io project. What is appserver.io appserver.io is a multithreaded

Easy to use utility functions for everyday PHP projects. This is a port of the Lodash JS library to PHP

Lodash-PHP Lodash-PHP is a port of the Lodash JS library to PHP. It is a set of easy to use utility functions for everyday PHP projects. Lodash-PHP tr

A PHP 5.3+ and PHP 7.3 framework for OpenGraph Protocol

Opengraph Test with Atoum cd Opengraph/ curl -s https://getcomposer.org/installer | php php composer.phar install --dev ./vendor/atoum/atoum/bin/atoum

A status monitor for Elite Dangerous, written in PHP. Designed for 1080p screens in the four-panel-view in panel.php, and for 7 inch screens with a resolution of 1024x600 connected to a Raspberry Pi.

EDStatusPanel A status monitor for Elite Dangerous, written in PHP. Designed for 1080p screens in the four-panel-view in panel.php, and for 7 inch scr

🐘 A probe program for PHP environment (一款精美的 PHP 探針, 又名X探針、劉海探針)

Simplified Chinese | 简体中文 Traditional Chinese(Taiwan) | 正體中文(臺灣) Traditional Chinese(Hong Kong) | 正體中文(香港) Japanese | 日本語 😎 X Prober This is a probe

PHP Text Analysis is a library for performing Information Retrieval (IR) and Natural Language Processing (NLP) tasks using the PHP language

php-text-analysis PHP Text Analysis is a library for performing Information Retrieval (IR) and Natural Language Processing (NLP) tasks using the PHP l

Owner
hepl-pwcs
L’organisation du cours « Programmation Web Côté Serveur »
hepl-pwcs
Pour m'entraîner et apprendre php et mysql j'ai fait un site pour la base de données sakila

Site pour la base de données de Sakila But de l'exercice S'améliorer en php et mysql. Pourquoi Dans le cadre d'un exercice en PHP dans mon école, nous

null 0 Sep 20, 2022
Potjet pour la contibution pour un évenement

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

null 1 Feb 4, 2022
Projet réalisé dans le cadre de l'apprentissage des API et d'API Platform

Bilemo BileMo est une entreprise offrant toute une sélection de téléphones mobiles haut de gamme. Vous êtes en charge du développement de la vitrine d

Abdelatif H. 1 Jan 13, 2022
Il était une fois un dev est une plateforme proposant une nouvelle expérience d'apprentissage

Il était une fois un dev - Domaine métier Présentation Il était une fois un dev est une plateforme proposant une nouvelle expérience d'apprentissage.

Incentive factory 7 Sep 21, 2022
Dépôt pour les cours et TP de BSN 1 en PHP

Introduction au WEB - Back Applications à télécharger et installer : Visual Studio Code : lien MAMP (serveur) : lien Ngrok : lien Base Après la config

Dan 5 Jan 31, 2022
Vote pour le code le plus moche

Smelly Code Installation Dans un premier temps, cloner le repository : git clone https://github.com/TBoileau/smelly-code cd smelly-code Installer les

Thomas Boileau 6 Jan 10, 2022
Repo pour la Nuit de l'Info 2021, équipe Passage Python

Passage Python Repo pour la Nuit de l'Info 2021, équipe Passage Python Les membres de l'équipe sont : Florian Duzes, FloDarPie Theo Cavailles, igneefl

Florian Duzes 3 Dec 3, 2021
Site Web pour un site de conciergerie d'entreprise

DATE DE CREATION : 30 novembre 2021 • Développement d'un site Web pour une entreprise de conciergerie pour entreprise, une interface pour les dirigea

Tiffany Dufetel 1 Jan 10, 2022
Permet de vous de ne pas perdre des gigots pour chaque monde

About [FR] Permet de vous de ne pas perdre des gigots pour chaque monde [ENG] Allows you not to lose legs for each world Informations # _

Achedon12 1 Jan 20, 2022
The Current US Version of PHP-Nuke Evolution Xtreme v3.0.1b-beta often known as Nuke-Evolution Xtreme. This is a hardened version of PHP-Nuke and is secure and safe. We are currently porting Xtreme over to PHP 8.0.3

2021 Nightly Builds Repository PHP-Nuke Evolution Xtreme Developers TheGhost - Ernest Allen Buffington (Lead Developer) SeaBeast08 - Sebastian Scott B

Ernest Buffington 7 Aug 28, 2022