Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ajoute la configuration de dev pour docker-compose - reprise #5012

Closed
wants to merge 9 commits into from

Conversation

firm1
Copy link
Contributor

@firm1 firm1 commented Aug 20, 2018

Cette PR reprend le travail de @motet-a ici (j'ai fait un rebase récent)

Ce que fait cette PR

  • Elle ajoute la mécanique et la documentation nécessaire pour installer zds lorsqu'on possède docker et docker-compose. L'installation se fait en une seule commande make docker-back-start donc c'est plutôt agréable et bénéfique pour faire des QA.
  • Les containers sont assemblés avec une base de donnée mysql (contrairement a sqlite pour du dev classique). Puisqu'on est sur une infra docker, ça ne coute pas grand chose pour le developpeur de brancher mysql dessus, au moins il gagne en fiabilité et se rapproche plus de la prod qu'avec sqlite.
  • Le back-end utilise un serveur zmardown qui lui aussi est assemblé et disponible sur le port standard de zmd : 27272
  • Cette PR reprend toutes les commandes du Makefile existant et rajoute son equivalent dockerisé. Par exemple le pendant de make fixtures pour docker sera make docker-fixtures

Ce qu'elle ne fait pas

  • Cette PR n'installe pas la machinerie LaTex (ce qui ne permet pas de générer des pdfs), car l'installation de LaTex est assez fastidieuses.
  • Cette PR n'a pas pour but de remplacer complètement la procédure d'installation classique, elle propose une alternative d'installation pour ceux qui savent se servir un minimum de docker.

Contrôle qualité

Vous devez installer Docker et docker-compose.

  1. Lancer make docker-back-start et attendez (longtemps)
  2. Charger les fixtures avec make docker-fixtures
  3. http://localhost:8000/

Rendez vous sur le site et constatez qu'il fonctionne.

motet-a and others added 9 commits August 20, 2018 02:25
Les images se basent sur Debian et pas sur Alpine suite à quelques
problèmes de paquets binaires pas distribués pour musl.

Le conteneur du frontend a un accès en lecture seule aux sources, dans
le dossier `assets/`. Il fait tourner uniquement le processus de Gulp,
qui observe tous les fichiers et met à jour un volume monté sur
`dist/` dès le moindre changement.

Ce même volume `dist/` est monté en lecture seule dans le conteneur du
backend, qui fait tourner le processus de Django. Le dossier `zds/`
est également partagé en lecture seule.

Pendant que ça tourne, les fixtures peuvent être appliquées comme ça :

    docker-compose exec back \
        python manage.py loaddata \
            --settings zds.settings_docker_dev \
            fixtures/users.yaml

Et lorsque tout est arrêté, les tests peuvent être lancés comme ça :

    docker-compose run back \
        python manage.py test \
            --settings zds.settings_docker_test

Et pour lint le backend :

    docker-compose exec back \
        make lint-back

La BDD, les fichiers des tutos et ceux des utilisateurs sont dans un
volume nommé, ils persistent.
Bon, j’étais un peu en panne d’inspiration pour le nom, du coup il
s’appelle `clem` pour l’instant. C’est un petit script compatible avec
Python 2 et Python 3 qui lance docker-compose.

Évidemment, c’est très limité. Mais je pense que c’est l’idéal pour
des gens qui veulent débugger rapidement un bout de JS sans avoir à
lire un tas de documentation sur comment se servir de Docker.

Ajoute également une petite page de documentation là-dessus.
Ça fait moins de répétitions.
L'utilisation de SELinux pour Docker (active sur les distributions type RHEL)
empechera l'utilisation correcte des volumes. Le flag :z doit-etre mis sur les
fichiers utilises par de multiples containers (ou :Z si un seul container
utilise le fichier).
@coveralls
Copy link

coveralls commented Aug 20, 2018

Coverage Status

Coverage decreased (-5.2%) to 68.361% when pulling bc37f98 on firm1:docker-dev into a44987a on zestedesavoir:dev.

@pierre-24
Copy link
Member

Merci <3

Note que pour installer LaTeX, c'est presque simple. Par contre, ça alourdi le poid un max (mais moins que les 1.5 Gio qu'on a pu connaitre par le passé).

@firm1
Copy link
Contributor Author

firm1 commented Aug 20, 2018

Note que pour installer LaTeX, c'est presque simple. Par contre, ça alourdi le poid un max (mais moins que les 1.5 Gio qu'on a pu connaitre par le passé).

Disons que j'ai été touché par la flemme d'essayer de comprendre comment cette partie doit se déployer. Après je me dis que celui qui utilise son docker, ce n'est pas forcément pour faire du pdf. Il préférera utiliser ses outils.

@gasche
Copy link
Contributor

gasche commented Nov 12, 2018

Une mini-remarque sur la doc: "un certain temps" ce n'est pas clair, selon les personnes ça peut vouloir dire 3 minutes, une heure, ou alors tourner toute la nuit (quand on installait OpenOffice sous Gentoo c'était ça). Ce serait chouette que quelqu'un mesure sur sa machine et note le temps dans la documentation ("par exemple, sur une machine de test, ça a pris 45mn"), pour donner un ordre de grandeur. Si jamais j'ai l'occasion d'essayer, j'essaierai de penser à le faire.

@gasche
Copy link
Contributor

gasche commented Nov 18, 2018

(Une personne de plus qui n'a pas réussi à installer le backend en voulant contribuer au (frontend du) site: https://zestedesavoir.com/forums/sujet/11603/prototype-dinterface-de-relecture-de-contenus/?page=1#p193229 .)

@Vayel
Copy link
Contributor

Vayel commented Nov 18, 2018

J'ai testé et j'obtiens l'erreur suivante :

Preparing to unpack .../71-xvfb_2%3a1.19.2-1+deb9u5_amd64.deb ...
Unpacking xvfb (2:1.19.2-1+deb9u5) ...
dpkg: error: error creating new backup file '/var/lib/dpkg/status-old': Invalid cross-device link
E: Sub-process /usr/bin/dpkg returned an error code (2)
ERROR: Service 'back' failed to build: The command '/bin/sh -c apt-get update     && apt-get install -y --no-install-recommends --no-install-suggests         git python3-setuptools libxml2-dev python3-lxml         libxslt-dev libz-dev python3-sqlparse libjpeg62-turbo         libjpeg62-turbo-dev libfreetype6 libfreetype6-dev         libffi-dev python-tox build-essential         xvfb xauth firefox-esr wget     && pip install wheel     && wget https://github.com/mozilla/geckodriver/releases/download/v0.16.1/geckodriver-v0.16.1-linux64.tar.gz     && tar -xzf geckodriver-v0.16.1-linux64.tar.gz -C /bin/     && rm -rf /var/lib/apt/lists/*               /var/cache/*               /usr/share/doc/*               /tmp/*' returned a non-zero code: 100
make: *** [Makefile:26: docker-back-start] Error 1

Je suis sous Archlinux.

@pierre-24
Copy link
Member

Les gens sous archlinux ont l'art de déterrer des bugs du futur ;)

docker/for-linux#480

@nils-van-zuijlen
Copy link
Contributor

Hé ! C'est ça d'être le plus à jour possible.

@pierre-24
Copy link
Member

Ouaip'. Mais pour le coup, à moins de compiler un python 3.6 vous même, vous êtes un peu coincés :/

@nils-van-zuijlen
Copy link
Contributor

C'est vrai, mais faut bien quelques inconvénients... Sinon ce serait une distro presque parfaite (le presque vient de la difficulté d'installation)

@Alex-D
Copy link
Contributor

Alex-D commented Nov 22, 2018

Mes 2 centimes : si c'est juste un problème de build, pourquoi ne pas publier sur DockerHub une image buildé (c'est gratuit) ? (Même si ça n'est pas un soucis de build, c'est toujours cool de DL une image buildé quand le temps de build > au temps de DL)

@firm1
Copy link
Contributor Author

firm1 commented Oct 24, 2019

Bon je n'ai pas la force de reprendre cette PR. Je ferme. Je laisse la brache tout de même si jamais. Mais j'évite de poluer la liste des PRs ici.

@firm1 firm1 closed this Oct 24, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants