Vérifier que Docker est bien installé avec
sudo apt install docker docker-compose
Lien vers le fichier : cliquez ici
Comme indiqué sur https://docs.docker.com/engine/install/linux-postinstall/
ou encore https://www.youtube.com/watch?v=_mwWxgfZ7Zc&t=806s
Pour que votre compte utilisateur possède les droits type 'root' sur docker, taper les commandes suivantes, puis se reloger pour prise en compte
sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
Lien vers le fichier : cliquez ici
On va commencer par créer un répertoire dockerapp dans notre répertoire personnel.
On y fait un répertoire php qui contiendra ensuite les fichiers du site ainsi qu'un répertoire db pour les bases de données et un répertoire pour phpmyadmin
On va avoir besoin de customiser l'image de php pour déclarer mysqli (technique trouvé sur https://www.youtube.com/watch?v=_mwWxgfZ7Zc&t=824s),
aussi dans ce répertoire dockerapp on va créer un fichier dockerfile.
dockerfile est un fichier de configuration qui permet de créer une image avec une séquence de commandes.
cd ~
mkdir dockerapp
cd dockerapp
mkdir php
mkdir db
mkdir phpmyadmin
nano dockerfile
Lien vers le fichier : cliquez ici
Coller ce contenu dans le dockerfile de php
FROM php:7.3-apache
RUN apt-get update && apt-get upgrade -y
RUN docker-php-ext-install mysqli
EXPOSE 80
Lien vers le fichier : cliquez ici
Dans le répertoire php on va créer un fichier index.php
afin que le site affiche qqchose le moment venu.
Pour cela taper
nano ./php/index.php
Lien vers le fichier : cliquez ici
Y coller ceci
<?php
$host = 'db'; //Nom donné dans le docker-compose.yml
$user = 'myuser';
$password = 'monpassword';
$db = 'tutoseu';
$conn = new mysqli($host,$user,$password,$db);
if(!$conn) {echo "Erreur de connexion à MSSQL<br />";}
else{
echo "Connexion à MSSQL ok<br />";
mysqli_close($conn);
}
?>
Lien vers le fichier : cliquez ici
Maintenant on va créer un fichier docker-compose.yml
dans lequel on donnera nos instructions
nano docker-compose.yml
Lien vers le fichier : cliquez ici
Y Coller ce contenu
version: '3.3'
services:
php:
build:
context: .
dockerfile: dockerfile
container_name: php73
image: php:7.3-apache
volumes:
- ./php:/var/www/html/
ports:
- 80:80
Lien vers le fichier : cliquez ici
On peut déjà vérifier que php se lance en tapant
docker-compose up -d
Lien vers le fichier : cliquez ici
Le build doit se passer sans erreur et vous devez voir un conteneur php73
Les logs de docker-compose peuvent se voir avec
docker-compose logs -f
Lien vers le fichier : cliquez ici
Comme dit sur https://docs.docker.com/get-started/08_using_compose/
"The service name is displayed at the beginning of the line"
On peut filtrer sur le nom d'un service comme "app". Ce qui donnerait
docker-compose logs -f app
Lien vers le fichier : cliquez ici
On va compléter le fichier docker-compose.yml
Pour éviter les erreurs on va le supprimer puis le recréer
rm docker-compose.yml
nano docker-compose.yml
Lien vers le fichier : cliquez ici
Y coller ceci
Noter que ./php correspond à un sous répertoire dont la position est relative au fichier docker-compose.yml
version: '3.3'
services:
php:
build:
context: .
dockerfile: dockerfile
container_name: php73
depends_on:
- db
image: php:7.3-apache
volumes:
- ./php:/var/www/html/
ports:
- 80:80
db:
container_name: mysql8
image: mysql:8.0
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ROOT_PASSWORD: tutoseu
MYSQL_DATABASE: tutoseu
MYSQL_USER: myuser
MYSQL_PASSWORD: monpassword
ports:
- 3306:3306
phpmya:
image: phpmyadmin/phpmyadmin:latest
container_name: phpmyadmin
environment:
PMA_ARBITRARY: 1
PMA_HOST: db
PMA_USER: myuser
PMA_PASSWORD: monpassword
UPLOAD_LIMIT: 20M
ports:
- 8899:80
Lien vers le fichier : cliquez ici
Prendre en compte les modifications en faisant de nouveau
docker-compose up -d
Lien vers le fichier : cliquez ici
Avec un navigateur, si vous accédez à l'ip de votre machine linux, vous devez voir s'afficher quelque-chose comme ci-dessous.
Pour récupérer l'ip de votre machine, voir https://www.tutos.eu/5699
Notez que l'on a vu plus haut qu'on pouvait voir les logs d'un service en particulier, un service qui pourrait s'appeler "app".
On peut aussi s'y connecter avec un bash avec une commande du type
docker compose exec app bash
Lien vers le fichier : cliquez ici
Article(s) précédent(s)
Article(s) en relation(s)