Bladeren bron

docker-sync

Vincent GUFFON 3 jaren geleden
bovenliggende
commit
32fc0bf776
6 gewijzigde bestanden met toevoegingen van 124 en 62 verwijderingen
  1. 71 0
      README.md
  2. 33 50
      docker-compose.yml
  3. 8 9
      docker/ap2i/Dockerfile
  4. 12 1
      docker/mariaDb/Dockerfile
  5. 0 1
      docker/node/Dockerfile
  6. 0 1
      docker/php/Dockerfile

+ 71 - 0
README.md

@@ -580,6 +580,35 @@ Il suffit de se loguer pour résoudre cette erreur: local.admin.opentalent.fr/#/
 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.
 
+# Si un container ne se build pas correctement
+
+###Il faut récupérer l'ID du container
+
+- lancer docker-compose up
+- ensuite vous faites un docker ps
+- vous récupérez l’id du container qui marche pas bien
+
+###Supprimer le container
+
+- docker rm ID_CONTAINER --force
+
+###Il faut récupérer l'ID de l'image qui servira a construire le container
+
+- docker stop $(docker ps -aq)
+- ensuite docker images
+- vous récupérez l’id de l’image qui servira a 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
+
 
 ## Quelques commandes docker utiles
 
@@ -619,3 +648,45 @@ ne seront pas accessibles.
     # 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
+
+
+## Initialisation de docker-sync (pour MAC et Windows)
+
+Docker sync va créer des containers intermédiaire qui contiendront le code de l'application. Ces containers seront synchronisés avec le code
+de la machine hote. La stack "normale" ira récupérer le code dans ces containers et plus directement sur la machine hote == gain de temps en lecture/écriture 
+
+   #Définir les dossier à synchroniser
+   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.
+
+   #créer un fichier docker-compose-dev.yml
+   ce fichier contiendras la surcharge nécéssaire pour faire correspondre les emplacements du code/vendors avec les volumes externes se rapportant au containers crées
+par le docker-sync
+
+   #Les bonnes manipulations à effectuer pour une initialisation ou un reset
+   
+   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
+   

+ 33 - 50
docker-compose.yaml → docker-compose.yml

@@ -65,17 +65,10 @@ services:
       - PHP_IDE_CONFIG=serverName=api
       - HTTPS_METHOD=noredirect
     volumes:
-      # Version Symfony 2
-      - appdata:/var/www/html/app/cache/
-      - appdata:/var/www/html/app/logs/
-      # ATTENTION : LES VENDROS SONT DELEGUES AU CONTAINER : AUCUNE MODIF FAITES SUR LA MACHINE HOST NE SERA REPLIQUE SUR
-      # LE CONTAINER ET VICE ET VERSA, mettre en com la ligne pour modifier et décommenter ./apps/opentalent-platform/vendor:/var/www/html/vendor:delegated.
-#      - appVendor:/var/www/html/vendor/
-      - ./useruploaddata:/var/www/html/fileadmin/user_upload:cached
       # Le code sera surtout modifié en dehors du container, donc la consistence est prioritairement dans ce sens
-      - ./apps/opentalent-platform:/var/www/html:cached
-      # À l'inverse, les vendors seront surtout modifiés dans le container
-      - ./apps/opentalent-platform/vendor:/var/www/html/vendor:delegated
+      - ./apps/opentalent-platform:/var/www/html:rw,cached
+      - appcache:/var/www/html/var/cache
+      - applog:/var/www/html/var/logs
     depends_on:
       - db
       - es
@@ -109,16 +102,9 @@ services:
       - HTTPS_METHOD=noredirect
     volumes:
       # Le code sera surtout modifié en dehors du container, donc la consistence est prioritairement dans ce sens
-      - ./apps/ap2i:/var/www/html:cached
-      # Version Symfony 5
-      - appdata5:/var/www/html/var/cache/
-      - appdata5:/var/www/html/var/log/
-      - appdata5:/var/www/html/var/files/
-      # ATTENTION : LES VENDORS SONT DELEGUES AU CONTAINER : AUCUNE MODIF FAITES SUR LA MACHINE HOST NE SERA REPLIQUE SUR
-      # LE CONTAINER ET VICE ET VERSA, mettre en com la ligne pour modifier et décommenter ./apps/api/New/vendor:/var/www/html/vendor:delegated.
-#      - appVendor5:/var/www/html/vendor/
-      # A l'inverse, les vendors seront surtout modifiés dans le container
-      - ./apps/ap2i/vendor:/var/www/html/vendor:delegated
+      - ./apps/ap2i:/var/www/html:rw,cached
+      - appcache5:/var/www/html/var/cache
+      - applog5:/var/www/html/var/logs
     depends_on:
       - db
       - es
@@ -286,7 +272,7 @@ services:
     restart: always
     volumes:
       - ./apps/opentalent:/var/source/opentalent:cached
-      - ./useruploaddata:/var/www/opentalent/fileadmin/user_upload:cached
+      - useruploaddata:/var/www/opentalent/fileadmin/user_upload:cached
       - ./apps/vendor:/var/source/vendor:delegated
       - ./apps/opentalent-config:/var/source/config:cached
     environment:
@@ -313,7 +299,7 @@ services:
     image: elasticsearch:2.4.6-alpine
     restart: always
     volumes:
-      - ./elasticsearchdata:/usr/share/elasticsearch/data
+      - elasticsearchdata:/usr/share/elasticsearch/data
       - ./docker/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:cached
     environment:
       - cluster.name=docker-cluster
@@ -383,35 +369,32 @@ services:
 #      - php70
 #      - ap2i
 
-  phpdoc:
-    hostname: phpdoc
-    container_name: phpdoc
-    image: nginx:alpine
-    volumes:
-      - ./apps/api-doc:/usr/share/nginx/html
-    environment:
-      - VIRTUAL_HOST=${PHPDOC_VIRTUAL_HOST}
-    #docker run --rm -v /opt/opentalent/apps/api/src/:/data -v /opt/opentalent/apps/api-doc:/output phpdoc/phpdoc -d /data -t /output
-
-  jsdoc:
-    hostname: jsdoc
-    container_name: jsdoc
-    image: nginx:alpine
-    volumes:
-      - ./apps/admin-doc:/usr/share/nginx/html
-    environment:
-      - VIRTUAL_HOST=${JSDOC_VIRTUAL_HOST}
+#  phpdoc:
+#    hostname: phpdoc
+#    container_name: phpdoc
+#    image: nginx:alpine
+#    volumes:
+#      - ./apps/api-doc:/usr/share/nginx/html
+#    environment:
+#      - VIRTUAL_HOST=${PHPDOC_VIRTUAL_HOST}
+#    #docker run --rm -v /opt/opentalent/apps/api/src/:/data -v /opt/opentalent/apps/api-doc:/output phpdoc/phpdoc -d /data -t /output
+#
+#  jsdoc:
+#    hostname: jsdoc
+#    container_name: jsdoc
+#    image: nginx:alpine
+#    volumes:
+#      - ./apps/admin-doc:/usr/share/nginx/html
+#    environment:
+#      - VIRTUAL_HOST=${JSDOC_VIRTUAL_HOST}
 
 volumes:
   mysqldata: ~
   elasticsearchdata: ~
-#  metabase-data: ~
-  # On rajoute un volume (de données non accessibles en dehors)
-  appdata: ~
-  appVendor: ~
-  appdata5: ~
-  appVendor5: ~
-  adminBower: ~
-  adminNode: ~
-  mercure_data:
-  mercure_config:
+  useruploaddata: ~
+  appcache5: ~
+  applog5: ~
+  appcache: ~
+  applog: ~
+  mercure_data: ~
+  mercure_config: ~

+ 8 - 9
docker/ap2i/Dockerfile

@@ -9,14 +9,13 @@ RUN apt-get update && apt-get install -y --fix-missing \
     apt-utils \
     gnupg
 
-#RUN echo "deb http://packages.dotdeb.org jessie all" >> /etc/apt/sources.list
-#RUN echo "deb-src http://packages.dotdeb.org jessie all" >> /etc/apt/sources.list
-##RUN curl -sS --insecure https://www.dotdeb.org/dotdeb.gpg | apt-key add -
-#RUN curl -s https://www.dotdeb.org/dotdeb.gpg | gpg --no-default-keyring --keyring gnupg-ring:/etc/apt/trusted.gpg.d/dotdeb.gpg --import; \
-#    chown _apt /etc/apt/trusted.gpg.d/dotdeb.gpg
+RUN echo "deb https://packages.dotdeb.org jessie all" >> /etc/apt/sources.list
+RUN echo "deb-src https://packages.dotdeb.org jessie all" >> /etc/apt/sources.list
+#RUN curl -sS --insecure https://www.dotdeb.org/dotdeb.gpg | apt-key add -
+#RUN sed 's/main$/main universe/' -i /etc/apt/sources.list; \
+#    apt-get update &&  \
 
-RUN sed 's/main$/main universe/' -i /etc/apt/sources.list; \
-    apt-get update && apt-get install --no-install-recommends -y \
+RUN  apt-get install --no-install-recommends -y \
                                                 openssh-server build-essential \
                                                 xorg iputils-ping libxrender-dev  \
                                                 wget gdebi ca-certificates wget xz-utils \
@@ -66,8 +65,8 @@ RUN version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \
 ########   BLACKFIRE #########
 
 ######## XDebug ########
-RUN pecl install xdebug; \
-    docker-php-ext-enable xdebug;
+#RUN pecl install xdebug; \
+#    docker-php-ext-enable xdebug;
 
 ######## Php conf ########
 COPY /.ssh /root/.ssh

+ 12 - 1
docker/mariaDb/Dockerfile

@@ -18,7 +18,6 @@ RUN apt-get update && \
 
 ## COMPOSER
 RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"; \
-    #php -r "if (hash_file('sha384', 'composer-setup.php') === '$COMPOSER_HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"; \
     php composer-setup.php; \
     php -r "unlink('composer-setup.php');"; \
     mv composer.phar /usr/local/bin/composer;
@@ -28,3 +27,15 @@ COPY /.ssh /root/.ssh
 COPY /docker/mariaDb/conf/my.cnf /etc/mysql/conf.d/
 
 WORKDIR /usr/src
+
+
+#CREATE USER IF NOT EXISTS root@localhost IDENTIFIED BY 'mysql660';
+#SET PASSWORD FOR root@localhost = PASSWORD('mysql660');
+#GRANT ALL ON *.* TO root@localhost WITH GRANT OPTION;
+#CREATE USER IF NOT EXISTS root@'%' IDENTIFIED BY 'mysql660';
+#SET PASSWORD FOR root@'%' = PASSWORD('mysql660');
+#GRANT ALL ON *.* TO root@'%' WITH GRANT OPTION;
+#CREATE USER IF NOT EXISTS myuser@'%' IDENTIFIED BY 'mysql660';
+#SET PASSWORD FOR myuser@'%' = PASSWORD('mysql660');
+#CREATE DATABASE IF NOT EXISTS databasename;
+#GRANT ALL ON databasename.* TO myuser@'%';

+ 0 - 1
docker/node/Dockerfile

@@ -21,7 +21,6 @@ RUN npm install npm@5.3.0; \
     # Allow root for bower
     echo '{ "allow_root": true }' > /root/.bowerrc;
 
-RUN npm install;
 
 COPY ./docker/node/entrypoint.sh /home/entrypoint.sh
 RUN chmod +x /home/entrypoint.sh

+ 0 - 1
docker/php/Dockerfile

@@ -23,7 +23,6 @@ RUN sed 's/main$/main universe/' -i /etc/apt/sources.list; \
     npm install elasticdump@3.3.7 -g; \
     ## COMPOSER
     php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"; \
-    php -r "if (hash_file('sha384', 'composer-setup.php') === '$COMPOSER_HASH') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"; \
     php composer-setup.php; \
     php -r "unlink('composer-setup.php');"; \
     mv composer.phar /usr/local/bin/composer; \