TrAsKiN.net, geek since 1337

Note #2 : Utiliser Docker sous Windows 26/01/2017 1 commentaire

Depuis mon article sur la création d'un environnement de développement avec Docker sous Windows 10, j'ai testé d'autres méthodes afin de parvenir à un environnement plus pratique à mettre en place. Je pense être enfin parvenu à mon but ! Je vais donc partir du principe que le poste de travail est sous Windows 10 Pro 64bit avec la virtualisation d'activé (Gestionnaire des tâches > Performance > Processeur pour vérifier) sans aucun logiciel dédié à éxecuter/interpréter et délivrer du code PHP (comme WampServer).

J'utilise Windows PowerShell lorsque j'exécute des commandes de type console, j'ai donc remplacé, dans les paramètres accessibles par clique droit sur la barre des tâches, Invite de commandes par PowerShell.

Installation

A partir de maintenant, il va falloir installer Docker pour Windows. Je vous conseille de prendre la version stable, de l'installer et de la lancer pour qu'elle active, si besoin, le module Hyper-V (qui sert à la virtualisation) de Windows. Lorsque que Docker est prêt, je vous conseille d'aller tout de suite dans les Settings, clique droit sur l'icône de Docker dans la barre des tâches. Dans le premier onglet, faites comme bon vous semble, toutefois je conseille de garder la mise à jour automatique de Docker. C'est dans l'onglet Shared Drives que nous devons impérativement partager le disque sur lequel se trouvent vos fichiers. Validez puis Docker vous demandera le mot de passe de l'utilisateur qui devra être impérativement non vide. Dans l'onglet Advanced, vous pouvez choisir les ressources allouées à Docker. Normalement, nous n'aurons pas besoin de toucher aux autres paramètres situés dans les autres onglets. Sachez toutefois, que dans l'onglet Reset vous pourrez redémarrer Docker et/ou le réinitialiser avec ses paramètres d'usine.

C'est parti !

Nous avons maintenant Docker fonctionnel sur notre poste de travail, nous allons pouvoir véritablement passer aux choses sérieuses. Ouvrons PowerShell pour commencer la configuration de notre environnement.

Réseau virtuel

Pour faciliter la liaison de tous nos conteneurs, j'ai décidé de créer un réseau virtuel dédié. Pour cela, rien de très compliqué, il suffit d'une petite commande :

docker network create local.dev

Ici, local.dev est le nom de notre réseau virtuel. Il nous faudra ensuite connecter les conteneurs à ce réseau pour qu'ils puissent communiquer ensemble.

Conteneur de base de données

Nous allons maintenant créer notre premier conteneur qui sera le gestionnaire de base de données. J'ai choisi de, mon côté, d'utiliser MariaDB mais vous pouvez le remplacer par MySQL qui est identique.

docker run --name mariadb --network=local.dev -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mariadb

Il s'agit ici d'un conteneur pour une utilisation en locale uniquement. Avec cette commande nous avons créé et lancé un conteneur nommé mariadb, connecté à notre réseau virtuel local.dev, avec l'autorisation de laisser le mot de passe de root à vide, détaché de la console et utilisant l'image mariadb. Vous pouvez remplacer mariadb par mysql car leur fonctionnement est identique.

Conteneur d'application

Il est temps de créer notre conteneur d'application. J'ai choisi de pouvoir le paramètrer avec un fichier que nous placerons à la racine de notre projet. Il s'agit ici d'un projet Symfony et l'image sur laquelle nous baserons notre conteneur est donc configurée pour ce framework. Créez un fichier docker-compose.yml avec :

version: '2'

services:
    web:
        container_name: nom-du-conteneur
        image: traskin/docker-symfony
        volumes:
            - .:/var/www/html
        external_links:
            - mariadb:db
        ports:
            - "80:80"

networks:
    default:
        external:
            name: local.dev

Nous ne définissons ici qu'un seul service pour notre application. Si vous avez opté pour mysql, remplacez simplement mariadb par mysql. Créons le conteneur avec la commande :

docker-compose up

Au bout d'un temps, le conteneur est lancé et est fonctionnel. Arrêtez-le avec la combinaison Ctrl+C. Notre environnement de travail est prêt ! Vous pouvez le démarrer de deux manières différentes :

  • docker start <nom-du-conteneur>
  • docker-compose start

Pour pouvoir y accéder, vous devrez ajouter à votre fichier hosts (situé C:\Windows\System32\drivers\etc\hosts), avec les droits Administrateur, la ligne suivante :

127.0.0.1    local.dev

Après un rapide redémarrage de votre poste de travail pour prendre en compte cet alias, vous pourrez accéder à votre application à l'url : http://local.dev/app_dev.php/ lorsque ce conteneur sera démarré.

PHPMyAdmin

Si vous souhaitez visualiser votre base de données, je vous propose la création d'un conteneur avec PHPMyAdmin :

docker run --name phpmyadmin -p 8080:80 -e MYSQL_ROOT_PASSWORD= --network=local.dev --link mariadb:db -d phpmyadmin/phpmyadmin

Comme à chaque fois, vous pouvez remplacer mariadb par mysql. PHPMyAdmin est désormais accessible à l'url : http://localhost:8080/.

Quelques commandes utiles

  • Lister les conteneurs lancés : docker ps
  • Lister tous les conteneurs : docker ps -a
  • Arrêter un conteneur : docker stop <nom du conteneur>
  • Démarrer un conteneur : docker start <nom du conteneur>
  • Démarrer un conteneur via docker-compose : docker-compose start
  • Arrêter tous les conteneurs : docker stop $(docker ps -q)

Culture YT #2 : PV Nova 20/01/2017 0 commentaire

Il est temps de continuer cette série d'articles de chaînes culturelles sur YouTube et pour la chaîne d'aujourd'hui j'ai choisi le grand et vaste sujet de la musique !

PV Nova, c'est un personnage ! Mais aussi un très bon vulgarisateur musical, un multi-instrumentiste, un compositeur et j'en passe... Il s'est fait connaitre grâce à quelques collaborations avec d'autres YouTubeurs connus. Depuis, il s'est largement illustré avec sa série de vidéos Expériences musicales, où il décortique les tubes ! Sa chaîne à eu récemment 10 ans et pour fêter ça, il a décidé de produire un album de 10 chansons en 10 jours ! Mais pas seulement, il pioche chaque jour 10 contraintes qui orientent la création du jour. Et c'est avec cette série que je vous propose de le découvrir.


Et voilà ! Je vous retrouve la prochaine fois avec une autre chaîne YouTube !

Retour sur l'année 2016 07/01/2017 0 commentaire

Il est temps de faire un point sur l'année qui vient de se terminer. Comme je ne sais pas trop comment commencer, je vais suivre l'historique de mes publications sur Facebook, Twitter et ici.

L'année à commencé avec la publication des musiques d'Ångström qui ont reçu un avis très positif. Je les ai composées et nous avons ensuite fait les arrangements avec mon frère. Peu de temps après, nous avons officialisé la phase de bêta publique et le site internet du jeu. Début Mars, avec des amis, nous avons décidés de faire de l'exercice, pour reprendre les parties d'airsoft, en faisant un peu de running. Pendant toute cette période, c'était l'hécatombe dans ma vie personnelle, avec une expulsion à la clé. J'ai quand même trouvé du temps pour valider des certificats sur OpenClassrooms, dont celui sur Symfony avec une note de 90%. J'ai partagé mon projet de hub pour World of Warcraft sur le site GitHub.

Le reste de l'année n'est pas très intéressante, j'ai commencé un gros projet pour une amie qui n'est toujours pas terminé. Malheureusement, il n'y a pas grand chose de plus à raconter sur cette année 2016. J'ai commencé une série d'articles sur des chaînes culturelles sur YouTube et j'ai écrit un premier mémo technique. L'année a aussi été ponctuée de nuits au max particulièrement sympa.

Cela conclut cette petite rétrospective de l'année passée, en espérant que 2017 me soit plus favorable et que que vous soyiez toujours là pour me suivre !

Note #1 : Environnement de développement avec Docker sous Windows 10 16/11/2016 0 commentaire

Voilà maintenant plusieurs jours que je tente de configurer un environnement de développement PHP / SQL avec Docker sous Windows 10 (en version Professionnel). J'ai lu beaucoup de documentations, pas mal de forums et autre Stack Overflow... Je pense être arrivé à un stade où la configuration me convient et j'ai décidé de le noter ici. Je pars du principe que Docker est installé sans passer par une machine virtuelle.

C'est parti pour du code (pas forcément commenté) !

La première étape est la configuration du container de l'application, ici Symfony, avec un fichier Dockerfile. J'ai choisi d'utiliser comme base le container officiel de php en version 7 et sous Apache. Voici ce qu'il contient :

FROM php:apache

RUN a2enmod rewrite

RUN docker-php-ext-install pdo_mysql opcache

RUN apt-get update \
    && apt-get install -y libicu-dev \
    && docker-php-ext-configure intl \
    && docker-php-ext-install intl

RUN { \
        echo 'short_open_tag = Off'; \
    } | tee "/usr/local/etc/php/php.ini"

J'active l'url rewriting d'Apache, puis j'installe les modules dont Symfony à besoin pour fonctionner et la configuration recommandée de php.

Pour faciliter la mise en place des containers j'utilise docker-compose afin de lier et de les exécuter simplement. Pour ça il faut créer un fichier docker-compose.yml.

version: '2'
services:
    web:
        build: .
        volumes:
            - .:/var/www/html
        depends_on:
            - db
        links:
            - db
        ports:
            - "80:80"

    db:
        image: mariadb
        environment:
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
            MYSQL_ROOT_PASSWORD: ''
        volumes:
            - database:/var/lib/mysql
        ports:
            - "3306:3306"

volumes:
    database:

Il y a le container web contenant l'application ainsi qu'un container db contenant la base de données. Cela crée aussi un volume spécifique pour la base de données gérée par Docker.

Maintenant il suffit de lancer la commande docker-compose up (pour initialiser la première configuration). Notez le nom du network créé par Docker, nous en aurons besoin plus tard. Une vérification sur http://localhost/web/ pour valider que tout fonctionne, on arrête les containers en faisant Ctrl+C puis on les relance avec docker-compose start.

Nous avons terminé la mise en place de l'environnement de développement PHP / SQL. Toutefois, on a souvent besoin d'un gestionnaire de base de données comme phpMyAdmin ou Adminer. Voici ma solution pour installer un container phpMyAdmin qui fonctionnera avec toutes vos applications utilisant cet environnement. Pour cela, il suffit d'exécuter les deux commandes suivantes :

docker run --name phpmyadmin -d -e PMA_HOST=db -p 8080:80 phpmyadmin/phpmyadmin

docker network connect <nom_du_network> phpmyadmin

Et voilà ! Un environnement complet pour développer vos applications Symfony !

Ha ! J'oubliais, c'est une configuration à ne pas utiliser en production à cause de la configuration de la base de données qui n'est pas protégée !

Culture YT #1 : E-Penser 08/11/2016 0 commentaire

Voici enfin le premier article de la série sur les chaînes YouTube culturelles. Et pour commencer, je vais parler de la première chaîne que j'ai découverte : E-Penser !

E-Penser est une chaîne de vulgarisation scientifique créée en 2013 par Bruce Benamran. Il y a plusieurs formats d'émissions, allant de 5 à 30 minutes, qui présentent des théories scientifiques, racontent l'histoire de scientifiques ou répondent à des questions assez générales. C'est une chaîne dont j'aime revisionner les épisodes souvent pour mieux comprendre les explications ou pour me les remémorer.

Je vous propose ici la playlist : L'univers : relativité, mécanique quantique, théorie des cordes... A regarder sans modérations et à partager le plus possible !


A bientôt pour une prochaine chaîne !