LAMP avec docker
Publié : 07 oct 2019, 22:21
Manjaro n'est pas adapté pour faire du développement web coté serveur
Une méthode "simple" est d'utiliser docker : nous pouvons choisir notre version de php ou de mysql ce qui permet une compatibilité beaucoup plus grande avec notre hébergeur.
Je vous propose un petit script a adapter pour créer son petit serveur lamp rapidement
Il va utiliser docker-compose, ce qui permet une grande souplesse d'utilisation
dockerweb.sh (ps: ne pas le lancer avec sudo !)
#!/usr/bin/bash
DIR="$HOME/dockers/"
project="${1:-project}"
#phpver="${2:-'7.2'}"
[ -e "${DIR}/${project}" ] || {
mkdir -v -p "${DIR}/${project}/www"
mkdir -v -p "${DIR}/${project}/mysql"
[ -e "${DIR}/${project}/www/index.php" ] || echo -e "<?php\n phpinfo();" > "${DIR}/${project}/www/index.php"
}
cd "${DIR}/${project}"
pwd
pkg=($(pacman -Qq docker-compose 2>/dev/null));
if [[ "${pkg[0]}" != "docker-compose" ]]; then
echo "installation de docker compose..."
sudo pacman -Si docker-compose
sudo usermod -aG docker $USER
fi
echo "démarrage de docker..."
sudo systemctl start docker
gen_config() # file_name
{
echo "Génération du fichier de configuration $1"
cat << "EOF" > "$1"
version: '3.7'
services:
web:
#container_name: webserver
image: webdevops/php-apache:7.2
#https://dockerfile.readthedocs.io/en/latest/content/DockerImages/dockerfiles/php-apache.html#
ports:
- "80:80"
volumes:
- ./www:/app
links:
- sql9:sql9
domainname: phpbb.local
environment:
PHP_MEMORY_LIMIT: 640M
PHP_DISPLAY_ERRORS: 1
PHP_MAX_EXECUTION_TIME: 600
APPLICATION_GID: 1000
extra_hosts:
- "web.local:127.0.0.1"
sql9:
image: mysql:5.5
volumes:
- ./mysql:/var/lib/mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: root
MYSQL_USER: demo
MYSQL_PASSWORD: demo
myadmin:
image: phpmyadmin/phpmyadmin
ports:
- "8080:80"
links:
- sql9:sql9
environment:
PMA_HOST: sql9
PMA_USER: root
PMA_PASSWORD: root
EOF
}
if [ ! -e "${DIR}/${project}/www/docker-compose.yml" ]; then
gen_config "docker-compose.yml"
fi
echo "phpmyadmin à : http://localhost:8080/ (login:root pass: root)"
echo "site web à http://localhost/"
docker-compose up
Si un projet n'existe pas encore il va le créer dans notre HOME avec cette arborescence
~/dockers
└── project1
├── docker-compose.yml
├── mysql
└── www
└── index.php
Donc ce script n'a rien de magique ou d'obligatoire , il crée une arborescence et uniquement un fichier de configuration ; opération tout à fait faisable manuellement.
----
L'accés à phpmyadmin est : http://localhost:8080/
L'accès au site web est http://localhost
----
Avec docker, pour lancer à nouveau le serveur, on se déplace dans le répertoire du projet (cd
~/dockers/projet1/
) et on lance la commande docker-compose up
Toute la "magie" est dans le fichier
docker-compose.yml
, il est possible de le modifier pour adapter sa configuration