LaravelDocker
Ecosystème
/home/user |_ dev_web |_ imgdocker : contient les éléments Docker |_ appname : contient l'application Laravel
Création de l'image Docker PHP7.4
Nous allons créer une image permettant de développer en PHP 7.4 et Laravel 6 sur un Ubuntu plus récent.
Il faut dans l'image php7.4, php7.4-mbstring, php7.4-mysql,...
Créer un dossier qui va héberger l'environnement de développement /home/user/dev_web/imgdocker Créer un fichier dockerfile avec les éléments suivants :
FROM ubuntu:focal ARG DEBIAN_FRONTEND=noninteractive ENV TZ=UTC RUN apt-get update && apt-get install -y tzdata && \ ln -fs /usr/share/zoneinfo/$TZ /etc/localtime && \ dpkg-reconfigure --frontend noninteractive tzdata RUN apt-get update && \ apt-get install -y apache2 php7.4 libapache2-mod-php7.4 php7.4-cli php7.4-mbstring php7.4-xml php7.4-zip php7.4-curl php7.4-mysql RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \ php composer-setup.php --install-dir=/usr/local/bin --filename=composer COPY 000-default.conf /etc/apache2/sites-available/000-default.conf RUN a2enmod rewrite EXPOSE 80 CMD ["apache2ctl", "-D", "FOREGROUND"]
Où 000-default.conf est le fichier de configuration du serveur Apache qu'il faudra mettre à l'emplacement du dockerfile.
Lancer la commande docker build -t ifxphp74:v1.0 -f dockerfile.
Création du conteneur Docker
version: '3' services: web: image: 'ifxwebdev' ports: - '80:80' networks: - ifxnetdev depends_on: - mariadb volumes: - '/home/user/dev_web/appname:/var/www/html' networks: - ifxnetdev depends_on: - db db: image: 'mariadb:latest' restart: 'always' ports: - '3306:3306' environment: MYSQL_ROOT_PASSWORD: 'sqlpass' MYSQL_ROOT_HOST: 'localhost' MYSQL_DATABASE: 'dbname' MYSQL_USER: 'dbuser' MYSQL_PASSWORD: 'dbpass' MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' volumes: - './mysql:/var/lib/mysql' networks: - ifxnetdev healthcheck: test: - CMD - mysqladmin - ping - '-pdbpass' retries: 3 timeout: 5s networks: ifxnetdev: driver: bridge volumes: ifx-mariadb: driver: local
Créer le conteneur avec la commande docker compose create
depuis le dossier imgdocker.
On peut lancer le conteneur avec la commande docker compose start
.
Utilisation
Pour utiliser Laravel depuis les conteneurs Docker, il faut lancer les commandes normales depuis le conteneur associé.
Configuration de Laravel sur le conteneur
Lorsque le conteneur est lancé, se connecter au conteneur web avec la commande docker exec -it nomapp-web-1 bash
Se déplacer dans le dossier /var/www/html et lancer les commandes de création du projet Laravel.
Configuration du conteneur de base de données
Lorsque le conteneur est lancé, se connecter au conteneur db avec la commande docker exec -it nomapp-db-1 mariadb -u root -p
Créer la base de données et l'utilisateur de l'application.