|
|
2 роки тому | |
|---|---|---|
| .ssh | 6 роки тому | |
| apps | 6 роки тому | |
| docker | 2 роки тому | |
| useruploaddata | 5 роки тому | |
| .DS_Store | 6 роки тому | |
| .dockerignore | 5 роки тому | |
| .env.skeleton | 3 роки тому | |
| .gitignore | 3 роки тому | |
| README.md | 3 роки тому | |
| docker-compose.yml | 3 роки тому | |
| logo.png | 4 роки тому |
Le projet docker offre un environnement de développement complet.
Installer Docker Engine : https://docs.docker.com/install/linux/docker-ce/ubuntu/
Et Docker Compose : https://docs.docker.com/compose/install/
Faire :
docker ps
Si Docker ne marche pas sans "sudo" appliquer : https://techoverflow.net/2017/03/01/solving-docker-permission-denied-while-trying-to-connect-to-the-docker-daemon-socket/
sudo usermod -aG docker $USER
Attention, le VPN peut parfois induire une erreur lors de l'installation de docker avec apt-get, mieux vaut le désactiver le temps de l'installation.
git clone git@gitlab.2iopenservice.com:vincent/docker.git
Les repositories suivants doivent être clônés dans les sous-répertoires suivants:
| Folder | Repo | SSH |
|---|---|---|
| apps/opentalent | Voir le repository | |
| apps/opentalent-admin-2.0 | Voir le repository | |
| apps/opentalent-config | Voir le repository | |
| apps/opentalent-platform | Voir le repository | |
| apps/ot_typo3 | Voir le repository | |
| apps/portail | - | - |
| apps/metabase | Voir le repository | |
| apps/python-scripts/clonedb | Voir le repository | |
| apps/frames | Voir le repository | |
| apps/ap2i | Voir le repository | |
| apps/ap2i-doc | Voir le repository | |
| apps/app | Voir le repository | |
| apps/app-doc | Voir le repository |
| Db Host | db |
| Login | root |
| Pass | mysql660 |
nginxTODO: à quoi il sert?
php70Héberge la partie back du logiciel: https://gitlab.2iopenservice.com/opentalent/opentalent-platform
Ce container embarque une installation de php-fpm v7.0.
nginx_newTODO: à quoi il sert?
ap2iServeur sur lequel est présent la version Symfony 5.3 du Back. Penser à copier le dossier ap2i/jwt vers config
mercureServeur Caddy servant de hub Mercure
python39Héberge différents scripts python, dont clonedb.
Embarque une installation de python3.9.
adminHéberge l'application frontend Opentalent, version pré-2021: https://gitlab.2iopenservice.com/vincent/opentalent-admin-2.0/-/tree/master-front
appHéberge l'application frontend Opentalent, version post-2021: https://gitlab.2iopenservice.com/opentalent/app
portailHéberge une instance Typo3 version 8.7, qui sert entre autres le portail Opentalent et le site 2iOpenservice
typo3Héberge une instance Typo3 version 9.5, qui sert tous les mini-sites des clients.
framesHéberge l'application Frames. Voir ici: https://gitlab.2iopenservice.com/opentalent/frames
adminassosTODO: à quoi il sert?
metabaseTODO: à quoi il sert?
esHéberge une instance elasticsearch TODO: à compléter
thumborHéberge une instance thumbor dont le rôle est de fournir des fichiers via une API.
phpmyadminHéberge une instance phpmyadmin
mailcatcherTODO: à quoi il sert?
blackfireHéberge une instance blackfire, utilisée pour l'analyse des performances des dockers php
phpdocHéberge une instance phpdoc, qui permet ensuite de générer des documentations automatiques à partir du code PHP.
jsdocTODO: à quoi il sert?
Si les docker sont up, tout arrêter:
docker-compose stop
Ajouter les lignes suivantes au fichier docker/nginx-proxy/certs/ssl_keys.sh
cp docker/nginx-proxy/certs/default.key docker/nginx-proxy/certs/<my-domain.fr>.key
cp docker/nginx-proxy/certs/default.crt docker/nginx-proxy/certs/<my-domain.fr>.crt
en remplaçant <my-domain.fr> par le nom de domaine attendu.
Copier les deux fichiers nouvellement générés dans
Exécuter le script depuis la racine du projet docker:
sh docker/nginx-proxy/certs/ssl_keys.sh
Supprimer le docker nginx-proxy, puis rebuilder:
docker-compose rm nginx-proxy
docker-compose build --no-cache
Puis relancer docker.
Pour que le certificat soit validé sur chrome, allez à l'adresse cible, ouvrir la console de debugger et entrer :
console.log(window.atob('dGhpc2lzdW5zYWZl'));
Cliquer ensuite n'importe où sur la page, et taper le mot qui s'est affiché dans la console précédemment.
Lorsque vous demandez la page http://local.admin.opentalent.fr/#/login , la page reste blanche, et le message d'erreur suivants s'affichent dans la console:
Uncaught Error: Cannot find module "@opentalent/ruler/lib/model/rule.class"
Accéder au container adminLegacy:
docker exec -it admin bash
Puis exécuter:
cd modules/ruler && jison -t rule.jison && babel --presets=es2015 model/**/*.js model/*.js -d lib && npm link && cd ../.. && npm link @opentalent/ruler
Enfin, relancer:
gulp serve
Lorsque vous demandez la page https://local.api.opentalent.fr/doc, une erreur php s'affiche, avec un message similaire à ceci :
RuntimeException in ClassCollectionLoader.php line 280: Cache directory "/var/www/html/app/cache/dev" is not writable.
Accéder au docker php70 :
docker exec -it php70 bash
Puis exécuter :
chmod -R 777 /var/www/html/app/cache/
Lorsque l'un de vos containers essaie d'accéder à un serveur extérieur en SSH, l'accès est refusé.
Vérifier d'abord que le répertoire ~/.ssh de votre machine a bien été copié dans le docker à l'emplacement:
/root/.ssh
Si ce n'est pas le cas, ajouter la ligne suivante au Dockerfile concerné:
COPY /.ssh /root/.ssh
Et relancer un:
docker-compose build
Si le problème persiste, vérifier que les droits du répertoire .ssh sont identiques à ceci:
drwxr-xr-x 1 root root 4096 Feb 24 16:01 .
drwx------ 1 root root 4096 May 10 12:04 ..
-rw-r--r-- 1 root root 0 Mar 18 2020 .gitkeep
-rw------- 1 root root 887 Mar 18 2020 id_rsa
-rw------- 1 root root 1678 Mar 18 2020 id_rsa_exploitation
-rw-r--r-- 1 root root 397 May 15 2020 id_rsa_exploitation.pub
-rw-r--r-- 1 root root 888 May 12 14:19 known_hosts
Accéder au docker php70:
docker exec -it php70 bash
Lancer:
app/console d:s:u --force
Suite à une modification des annotations, il faut forcer un vidage du cache symfony:
Accéder au docker php70:
docker exec -it php70 bash
Lancer:
rm -r app/cache/*
chmod -R 777 app/cache/
Puis quitter le docker:
exit
et le redémarrer:
docker restart
Pour régénérer l'index elasticsearch:
Accéder au docker php70:
docker exec -it php70 bash
Lancer, puis interrompre dès qu'il commence à populate les organizations :
php app/console fos:elastica:populate --index search
Se rendre sur l'interface graphique elasticsearch, et se connecter à https://local.elasticsearch.opentalent.fr/
Attention à ce que le navigateur ne bloque pas le certificat SSL, essayez d'abord d'ouvrir https://local.elasticsearch.opentalent.fr/ dans un onglet à part
Supprimer l'alias search de l'index qui le porte, et ajouter ce même alias à l'index nouvellement créé
Faire, dans cet ordre précis:
Couper le VPN
Couper le service docker:
sudo systemctl stop docker
Redémarrer le VPN
Redémarrer docker
sudo systemctl start docker
Vérifier que le fichier .env existe dans le projet. Sinon :
ln -s .env.local .env
Il suffit de se loguer pour résoudre cette erreur: local.admin.opentalent.fr/#/login
Si on est déjà authentifié côté back, vérifier qu'on accède bien au front en https, sans quoi les cookies opentalent.fr ne seront pas accessibles.
Il faut récupérer l'ID du container :
Supprimer le container :
docker rm ID_CONTAINER --force
Récupérer l'ID de l'image qui servira à construire le container :
Supprimer l'image :
docker rmi ID_IMAGE --force
Vider le cache du Builder :
docker builder prune
On relance le compose
docker-compose up
# Build docker compose
docker-compose build
# Lancer le docker-compose == lancer les containers
docker-compose up
# Stopper le docker-compose == stopper les containers
docker-compose stop
# Stopper tous les containers quelque soit le docker-compose
docker stop $(docker ps -a -q)
# Supprimer tous les container Docker
docker rm $(docker ps -a -q)
# Supprimer toutes les images Docker
docker rmi $(docker images -q)
# Lister les proccess Docker
docker ps
# Lister les containers actifs
docker container ls
# Lister tous les containers
docker container ls -a
# Lister les images
docker images
# Entrer dans un container en bash
docker exec -it db bash ==> db étant le container name que l'on retrouve en faisant docker ps
# Docker compose a une facheuse tendance à conserver des config entre chaque lancement (comme la config de la BDD)
# si par exemple, on arrive pas à se connecter à la BDD à cause d'un Access Denied, il faut faire:
docker-compose rm -v
Docker sync va créer des containers intermédiaires qui contiendront le code de l'application. Ces containers seront synchronisés avec le code de la machine hôte. La stack "normale" ira récupérer le code dans ces containers et plus directement sur la machine hôte == gain de temps en lecture/écriture
Créer un fichier docker-sync.yml contenant les dossiers à synchroniser : pour mac privilégier la stratégie native_osx (par défaut) pour le code de l'application. Pour les vendors et node paquets, préférer le Rsync.
Ce fichier contiendra la surcharge nécessaire pour faire correspondre les emplacements du code/vendors avec les volumes externes se rapportant aux containers crées par le docker-sync.
docker-compose stop
docker-sync stop
docker-sync clean
Il faut pouvoir supprimer tous les volumes qui ont été générés par un docker-sync précédent : pour cela on commence par supprimer les containers utilisant les volumes via 3 commandes :
docker ps -as === liste les containers
docker volume ls === liste les volumes
docker rm app === supprime un container
Si on est sur MAC, le docker deskop fournit une interface graphique qui nous aide à faire cette opération.
Une fois tous les containers désirés supprimés, on supprime les volumes qui ne sont utilisés par aucun container docker volume prune
Une fois que tout est clean, on commence par faire un docker-compose up On se connecte à chaque container possédant un dossier vendor/node_modules et on passe les commandes composer install ou npm/yarn install (idem si bower)
Une fois l'install ok, on stop docker-compose : docker-compose stop
On peut alors lancer
docker-sync-stack start