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

Docker #1127

Merged
merged 10 commits into from Mar 22, 2024
Merged

Docker #1127

merged 10 commits into from Mar 22, 2024

Conversation

seballot
Copy link
Contributor

Yo !

@oiseauroch merci pour les commits sur docker! néanmoins j'ai eu des soucis sur ma machine :) Voilà mes retours

  1. Déjà, je pense que ça aurait été bien de faire un message à tous les devs pour les informer qu'ils vont devoir rebuilder, et leur fournir des explications sur la marche à suivre : supprimer leur wakka.config.php ou qu'ils le modifient avec les nouvelles bonnes valeurs, supprimer son ancienne image (car elle a le même nom), et s'assurer que tout fonctionne bien. Perso, ça fait 1h30 que je bataille pour re avoir un environement de dev, ça fait pas super plaisir :) surtout quand ça marchait avant héhé
  2. J'ai ajusté la doc, qui n'était plus bonne, notamment sur les valeurs à renseigner lors de l'install, et sur les commandes à lancer
  3. Chez moi le docker-compose-dev.yml ne fonctionne pas correctement, quand je up j'ai cette erreur yeswiki-web | nginx: [emerg] host not found in upstream "yeswiki-app:9000" in /etc/nginx/nginx.conf:34.
  4. Je ne comprends pas vraiment ce qu'apporte le docker-compose-dev.yml, est ce que tu voudrais bien m'expliquer? je suis pas un expert docker. Est ce que le docker-compose de base ne devrait pas etre celui de dev, et plutot en créer un pour la prod? car je pense qu'aujourd'hui docker est quasi uniquement utilisé en dev pour yeswiki
  5. Lorsque j'ouvre un terminal sur mon container avec docker exec -it yeswiki bash, il n'y a ni composer ni yarn, du coup je ne peut pas gérer mes dépendances (il faudrait que j'installe yarn et composer sur ma machine locale, avec la bonne version etc...). Je pense que c'est du aux changement qu'il y a eu sur le dockerfile. Est ce qu'il y a un moyen d'avoir accès à ces commandes? car sinon IMHO cela defeat le but de docker, non?

En tout cas super content qu'il y ait de nouveau dev sur yeswiki, meme si j'avoue cette expérience docker m'a un peu frustré sur le coup hi hi

Bise !

@seballot seballot changed the title Fix Docker Docker Dec 21, 2023
@ppom0
Copy link

ppom0 commented Dec 21, 2023

Hello !
Déso pour le breaking change, olala :/
De ce que j'avais compris, l'image docker précédente était pas fonctionnelle ou pas utilisée, c'est pour ça qu'on s'était permis·es de tout modifier comme ça. Désolé·e du coup 🙇
Je crois que le docker-compose-dev.yml est pas fini. Qu'il devrait aller avec un nouveau Dockerfile.dev

En fait le Dockerfile qu'on a fait est bien pour de la prod : image la plus légère possible, sans yarn et composer. Mais pour du dev, c'est pas du tout adapté du coup.

Je ne me souviens pas à quoi ressemblait l'ancien Dockerfile, mais il était ptet mieux adapté à du dev. Ptet qu'un rollback s'impose, pour le dev.
Et c'était un chantier qu'on n'avait pas fini, donc c'est une erreur que ce soit sur la branche principale comme ça, nostra culpa :/

@ppom0
Copy link

ppom0 commented Dec 21, 2023

Du coup, merci pour ta PR, c'est déjà ça de boulette en moins.

Pour la suite, je sais pas quoi proposer (pis je viens d'arriver sur YesWiki moi !)

On pourrait par exemple reprendre l'ancien setup docker pour le dev, et faire de notre contrib un truc "spécial prod", qui aurait plus vocation à finir sur le docker hub par exemple.

@ppom0
Copy link

ppom0 commented Dec 21, 2023

Est-ce qu'il y avait des points de friction avec l'ancien Dockerfile ? Des choses à améliorer pour l'UX de dev ?

@mrflos
Copy link
Contributor

mrflos commented Dec 21, 2023

Hello!
Pour remettre un peu de contexte sur cette histoire de docker: voici l'ancien compose https://raw.githubusercontent.com/YesWiki/yeswiki/6bb36ac7013ba87005af02e04c0f3b5d32cc01cd/docker-compose.yml
Il ne marchait pas pour les étudiant.es qui avait des configurations variées entre les macbookpro arm M2, les PC windows etc, et il y avait l'opportunité de faire une image plus légère en faisant en sorte de ne pas garder les outils de builds (il y avait aussi l’idée de passer de debian a alpine, plus légères encore).
Dans l'ancienne image docker, on utilisait une image fourre tout avec une assez vieille version de php et composer, du node dedans, etc,.. mais en effet elle contenait tous les outils de dev comme un mail catcher et phpmyadmin.

Désolé c'est moi qui ait rapidement fusionné la branche, car j'avais la semaine avec les étudiant.es dockerophiles qui démarrait, on aurait du aller plus loin dans la concertation avant de mettre ca dedans, sorry... (<tacle gratos>mais je remarque que la fameuse promesse de docker d’écrire 4 lignes dans un fichier et que cela marche de partout ne semble pas tenue</tacle gratos>).

En tout cas, la solution me semble toute trouvée puisqu'il suffirait donc de faire un docker compose de dev (et la remarque de @seballot d'avoir le docker-compose par défaut en mode dev, et d'avoir celui de production sous un nom du genre docker-compose-prod.yaml ), en essayant d'avoir un truc cohérent entre les deux (meme images sources? même secrets?) et donc de remettre la stack de dev en mode je fais docker-compose et ca juste marche, et c'est parti!

Je suis pas fort en docker, mais je peux faire gros beta testeur, et documenter le tout. Quelqu'un.e de dispo pour regarder cela a l'occasion?

@seballot
Copy link
Contributor Author

salut @ppom0, merci pour tes retours !

Ok je comprend mieux l'idée de faire un truc très léger pour la prod. Mais effectivement c'est pas adapté au dev :)

D'ailleurs je viens de comprendre l'histoire des volumes avec le docker-compose-dev, car en fait sur le docker-compose.yml si je fait des changement sur mon éditeur sans etre connecté sur le container, les changements ne sont pas pris en compte. Mais meme en virant le volume, peut etre à cause de la conf nginx, si je change un fichier javascript rien n'est pris en compte dans mon navigateur. donc vraiment je peux pas dev lol

Si @ppom0 ou @oiseauroch vous êtes motivé à refaire une config plus adaptée au dev, ça serait avec plaisir. Si vous avez pas le temps, je le ferai, dites moi

a+

@seballot
Copy link
Contributor Author

Ps: @mrflos je suis très déçu de voir qui tu priorise entre des étudiants inconnus avec leur macbook dernier modèle, et ton pote linuxien grand contributeur de yeswiki :P

@mrflos
Copy link
Contributor

mrflos commented Dec 22, 2023

@seballot je ne priorise pas, t'inquietes, juste je ne maitrise pas encore assez cette techno pour faire les bons choix, désolé!
La prochaine fois que je te voies IRL, on te fera un setup nix aux petits oignons et tu pourras enfin t'echaper de ta prison dorée dockerisée 😋

@oiseauroch
Copy link

Si @ppom0 ou @oiseauroch vous êtes motivé à refaire une config plus adaptée au dev, ça serait avec plaisir. Si vous avez pas le temps, je le ferai, dites moi

Hello, je vois pour faire ça pendant les vacances. Effectivement, l'image crée est plus pour la prod que pour le dev

oiseauroch added 3 commits December 26, 2023 18:08
@oiseauroch
Copy link

Normalement, l'image fonctionne si vous voulez tester.

Copy link
Contributor Author

@seballot seballot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yo !
Super merci pour ce travail !
J'ai pu builder et lancer les containers sans encombres, la doc est top !

En revanche quelques trucs ne fonctionnent pas, cf mes commentaires

A+
Sebastian

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

je crois que ce fichier devrait appeler le docker-prod non?

networks:
- yeswiki

yeswiki-web:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Juste par curiosité, quel est l'intérêt d'avoir deux container yeswiki-app et yeswiki-web, et pas un seul?

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je ramène ma fraise, je peux pas justifier tout ce qui a été fait ici mais pour une question générale je peux ^^
Ça fait partie de la "philosophie" de Docker, avec généralement un seul processus qui tourne par conteneur. Ça a plusieurs avantages,

  • le meilleur étant de pas avoir à maintenir l'install de nginx : on utilise l'image dédiée, avec une conf adaptée aux conteneurs et tout. Alors que si on se fait un apt install nginx dans la même image, on n'a pas ces garanties
  • le second étant de tirer parti de l'ordonnanceur de Docker : si le PID 1 du conteneur s'éteint, le conteneur fail. Si tu veux faire un conteneur correct avec plusieurs processus, il va falloir que tu lances un mini ordonnanceur toi-même, ou le 2e processus sera pas du tout "géré"

Voilà pour l'info drop! Je suis sûr·e que y'a d'autres explications plus charismatiques sur le web :')

- yeswiki-app
networks:
- yeswiki
mail:
Copy link
Contributor Author

@seballot seballot Jan 4, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Top le mailer !!

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ce fichier n'est pas utilisé, et l'extension ne correspond pas, un oubli peut etre?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perso j'aime pas trop lancer les commandes type composer et yarn dans les entrypoint, car si elles foirent, alors le container ne démarre pas. Et comme il démarre pas tu peux pas t'y connecter pour fixer d'éventuel truc pour que ça passe, faut donc utiliser un entrypoint special pour débugger etc..

Ca me dérange pas de laisser comme ça, juste je partage un retour d'expérience

Comment on lines +88 to +89
docker compose exec yeswiki-app composer install
docker compose exec yeswiki-app yarn install
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Chez moi ces commandes ne fonctionnent pas

OCI runtime exec failed: exec failed: unable to start container process: exec: "yarn install": executable file not found in $PATH: unknown

Aussi, si je me connecte au container avec un docker compose exec yeswiki-web bash et que ensuite je fait un yarn ou un composer, la commande se lance mais échoue à cause de problèmes de permissions

yarn install => error Error: EACCES: permission denied, unlink '/var/www/html/node_modules/@babel/parser/CHANGELOG.md'

composer install => In Filesystem.php line 288:=Could not delete /var/www/html/vendor/bin/carbon:

alors que dpeuis le entrypoint ça fonctionne. (Ps: j'ai bien créé un docker/.env avec mon user id & gorup)


ARG GID

RUN groupadd -g "${UID}" yeswiki \
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ya une typo, je croies : ${UID} devrait être ${GID}

@mrflos
Copy link
Contributor

mrflos commented Mar 15, 2024

ping @ppom0 @oiseauroch ca vous dirai une session pair programing avec moi comme beta testeur neophyte de docker, histoire de documenter et valider que nos 2 scenarii docker prod et dev fonctionnent puis le merger?

@ppom0
Copy link

ppom0 commented Mar 17, 2024

Ça me dit, en journée jeudi ou vendredi ! @mrflos @oiseauroch

@oiseauroch
Copy link

Dispo aussi jeudi ou vendredi !

@mrflos
Copy link
Contributor

mrflos commented Mar 19, 2024

@ppom0 @oiseauroch ça irait jeudi matin ? Genre 11h?

@ppom0
Copy link

ppom0 commented Mar 19, 2024

ok pour moi !

@mrflos mrflos merged commit d5adffa into doryphore-dev Mar 22, 2024
2 of 4 checks passed
@mrflos mrflos deleted the docker branch March 22, 2024 13:34
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.

None yet

4 participants