LaravelDocker

De InfoXelec
Aller à la navigation Aller à la recherche

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 ifxwebdev .

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: 'accesban'
            MYSQL_USER: 'useracceshye'
            MYSQL_PASSWORD: 'mdpacces'
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        volumes:
            - './mysql:/var/lib/mysql'
        networks:
            - ifxnetdev
        healthcheck:
            test:
                - CMD
                - mysqladmin
                - ping
                - '-pmdpacces'
            retries: 3
            timeout: 5s
networks:
    ifxnetdev:
        driver: bridge
volumes:
    ifx-mariadb:
        driver: local