# Ubuntu: Mise en oeuvre de docker-wine {{METATOC 4-5}} #### Construire et exécuter localement docker-wine * cloner le référentiel depuis GitHub: ``` git clone https://github.com/scottyhardy/docker-wine.git ``` * construire le conteneur: ``` make ``` * exécuter le conteneur et démarrer une session interactive avec /bin/bash, : ``` make run ``` * ou utiliser le script `docker-wine` avec le commutateur `--local`: ``` docker-wine --local ``` #### Volume winehome du conteneur Lorsque l'image de `docker-wine` est instanciée avec le script `docker-wine`, le contenu du dossier `/home/wineuser` est copié dans le conteneur de volume `winehome` lors de l'instanciation du conteneur wine. L'utilisation d'un volume de conteneur permet au conteneur wine de rester inchangé et de pouvoir être retiré en toute sécurité après chaque exécution avec `docker run --rm ....` Tous les environnements utilisateur créés avec `docker-wine` seront stockés séparément et les données de l'utilisateur persisteront tant que le volume n'est pas enlevé. Cela permet effectivement à l'image de `docker-wine` d'être remplacée par une version plus récente à tout moment. On peut créer manuellement le volume de conteneur `winehome` en lançant: ``` docker volume create winehome ``` Lorsqu'on ne veut pas du volume de conteneur, on peut le supprimer en utilisant: ``` docker volume rm winehome ``` #### Le script ENTRYPOINT Le paramètre `ENTRYPOINT` défini pour l'image `docker-wine` est simplement `/usr/bin/entrypoint`. Ce script est essentiel pour garantir que le fichier `.Xauthority` de l'utilisateur est copié de `/root/.Xauthority` vers `/home/wineuser/.Xauthority` et que la propriété du fichier est définie sur `wineuser` chaque fois que le conteneur est instancié. Les arguments spécifiés après `docker-wine` sont également transmis à ce script pour garantir qu'il est exécuté en tant que `wineuser`. Par exemple: ``` docker-wine wine notepad.exe ``` Les arguments `wine notepad.exe` sont interprétés par le conteneur wine pour remplacer la directive `CMD`, qui sinon exécute simplement `/bin/bash` pour donner une session bash interactive en tant que `wineuser` dans le conteneur. #### Utilisation de l'image docker-wine dans un fichier Docker Pourutiliser `scottyhardy/docker-wine` comme base pour une autre image Docker, il faut configurer le même point d'entrée pour s'assurer de toujours exécuter en tant que `wineuser` et que les graphiques X11 continuent de fonctionner en ajoutant les éléments suivants au `DockerFile`: ``` FROM scottyhardy/docker-wine:latest ... ENTRYPOINT ["/usr/bin/entrypoint"] ``` Ou si on préfére exécuter un programme par défaut, on peut utiliser: ``` ENTRYPOINT ["/usr/bin/entrypoint", "wine", "notepad.exe"] ``` Ou si pour exécuter un programme par défaut tout en pouvant le remplacer facilement, on peut utiliser: ``` ENTRYPOINT ["/usr/bin/entrypoint"] CMD ["wine", "notepad.exe"] ```