Docker et Drupal
Docker et Drupal
Le projet woodby docker4drupal est très pratique pour initialiser rapidement un projet Drupal dans docker. Et avec Portainer c'est encore plus simple à gérer !
Créer les containers du projet
- Créer un répertoire avec le nom du projet et y copier-coller les fichiers D4D :
- docker-compose.yml
- .env
- Makefile
- Configurer les fichiers .env puis docker-compose.yml selon les besoins du projet (la documentation de d4d)
Personnellement j'utilise un seul container traefik et portainer pour tout les projets (voir ci-après). Pour ce faire je commente les définitions de portainer et traefik en fin de fichier docker-compose.yml.
Pour un multisite drupal voir plus bas Drupal Mutlisites.
- ouvrir le terminal depuis le dossier et lancer la commande :
$make up
ceci va initialiser et démarrer les containers du projets
Traefik
J'utilise un seul container Traefik pour tous les projets.
pour cela je place un fichiers traefik.yml au niveau des dossiers projets avec le code suivants :
version: '2' services: traefik: image: traefik restart: unless-stopped command: -c /dev/null --web --docker --logLevel=DEBUG networks: - project1 - project2 ports: - '8000:80' - '8080:8080' volumes: - /var/run/docker.sock:/var/run/docker.sock networks: project1: external: name: fbmultimedia_default project2: external: name: alg_default
Ajouter dans ce fichier autant de network que de projet avec name: projectname_default.
Il faudra ensuite (re)initialiser ce container traefik dans Portainer (voir ci-après).
Portainer
J'utilise là aussi un seul container Portainer pour gérer les différents projet (et non un portainer/projet) :
Créer un répertoire 'portainer' au même niveau que les projets et qui contient le fichier docker-compose suivant :
version: '2' services: portainer: image: portainer/portainer ports: - "9000:9000" command: -H unix:///var/run/docker.sock volumes: - /var/run/docker.sock:/var/run/docker.sock - portainer_data:/data volumes: portainer_data:
Pour démarrer le container, ouvrir le teminal depuis le dossier portainer et lancer la commande :docker-compose up -d
Dans le navigateur rdv sur le dashboard de portainer à l'adresse http://localhost:9000
Notre nouveau stack doit apparaitre dans la liste et ses containers sont démarrés.
Ré-initialiser traefik
A chaque nouveau projet ajouté dans traefik.yml il faut re-crée le container traefik pour qu'il intègre ce nouveau network.
Imporant : Le build du stack/container traefik ci-dessous doit se faire après la création+démarrage des containers du projet (voir ci-dessus)
- Dans la section Stack, commençons par supprimer le stack traefik existant (ceci va supprimer le container associé).
- Cliquer ensuite sur +Add stack.
- Nommer le stack 'traefik'
- pour 'build method' uploader notre fichier trafik.yml.
- Initialiser le stack.
Le container traefik est maintenant opérationnel et intègre notre nouveau network pour le projet.
Drupal multisite
Dans la description du container apache de docker-compose.yml, ajouter à la ligne traefik.frontend.rule les différentes url des sites séparés par des virgules :
apache: image: wodby/apache:$APACHE_TAG container_name: "${PROJECT_NAME}_apache" depends_on: - php environment: APACHE_LOG_LEVEL: debug APACHE_BACKEND_HOST: php APACHE_VHOST_PRESET: php APACHE_DOCUMENT_ROOT: /var/www/html/htdocs volumes: - ./:/var/www/html # For macOS users (https://wodby.com/stacks/drupal/docs/local/docker-for-mac/) # - ./:/var/www/html:cached # User-guided caching # - docker-sync:/var/www/html # Docker-sync labels: - 'traefik.backend=${PROJECT_NAME}_apache' - 'traefik.port=80' - 'traefik.frontend.rule=Host:${PROJECT_BASE_URL},deltax.docker.localhost'
et dans le fichier sites.php de drupal, les urls doivent être précédé du port de cette façon :
$sites['8000.fb-multimedia.docker.localhost'] = 'fb-multimedia.fr'; $sites['8000.deltax.docker.localhost'] = 'deltax.fr';
Accéder au site
(Remplacer ici la variable PROJET_BASE_URL par celle du fichier .env)
Commençons par ajouter une ligne pour le(s) site(s) au fichier /etc/hosts :127.0.0.1 [PROJECT_BASE_URL]
Le site est maintenant accessible via l'url http:\\[PROJECT_BASE_URL]:8000. AUtrement voir la rubrique Problèmes si dessous.
Problèmes
Erreur | Debuguage |
404 page not found |
|
Invalid Gateway | Recréer le container traefik pour qu'il intègre le nouveau projet |
Forbidden You don't have permission to access / on this server. | Dans docker-compose vérifier la présence de APACHE_DOCUMENT_ROOT: /var/www/html/htdocs(ou web) Vérifier l'intégrité des fichiers drupal (composer install) |
The website encountered an unexpected error. Please try again later. | Verifier le settings.php |
Le fichier spécifié temporary://filejDmgLA n'a pas pu être copié car le répertoire de destination n'est pas correctement configuré. Cela peut être dû à un problème de permissions sur le fichier ou le répertoire. |
dans le container php: $ sudo chgrp -R 82 sites/default/files $ sudo chmod -R 775 sites/default/files ou il est également possible d'ajouter l'utilisateur www-data au group wodby directement dans le fichier /etc/groups |
Bienvenue sur le blog !
Il s'agissait au départ d'un recueil de notes donc certains billets sont plutôt succincts.
J'espère que vous y trouverez l'info qu'il vous manque dans votre recherche.
Vos commentaires sont les bienvenus.
Bonne lecture !
Catégorie
Tags
- Androïd
- Apache
- Ardour
- Atom
- bash
- BEM
- Bootstrap
- calDAV
- carDAV
- Casque
- Cheat sheet
- CKEditor
- Commerce
- Compass
- Composer
- CSS
- Docker
- docker4drupal
- Drupal
- Drupal 7
- Drupal 8
- DrupalVM
- Drush
- faderport
- Fancy
- Features
- Font-awesome
- Git
- Github
- GitLab
- GNU
- grid
- Hacking
- htaccess
- html5
- Imce
- Jack
- Javascript
- jplayer
- jQuery
- Lavalamp
- Less
- Lightning
- Linux
- locahost
- memtest usb .img .iso
- Music
- Mysql
- Omega
- owncloud
- Pageant
- Parallax
- php
- phpMyAdmin
- Portainer
- Puphpet
- Putty
- Regex
- Responsive
- Samba
- Sass
- Sécurité
- SEO
- Solcalendar
- Solr
- ssh
- suggestions
- Taxonomy display
- TouchDaw
- Traefik
- Utilitaire
- Vagrant
- vidéo
- VirtualBox
- vlc
- Wamp
- Webform