浏览代码

docker-sync

Vincent GUFFON 3 年之前
父节点
当前提交
32fc0bf776
共有 6 个文件被更改,包括 124 次插入62 次删除
  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 
 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.
 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
 ## 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)
     # 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:
     # si par exemple, on arrive pas à se connecter à la BDD à cause d'un Access Denied, il faut faire:
     docker-compose rm -v
     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
       - PHP_IDE_CONFIG=serverName=api
       - HTTPS_METHOD=noredirect
       - HTTPS_METHOD=noredirect
     volumes:
     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
       # 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:
     depends_on:
       - db
       - db
       - es
       - es
@@ -109,16 +102,9 @@ services:
       - HTTPS_METHOD=noredirect
       - HTTPS_METHOD=noredirect
     volumes:
     volumes:
       # Le code sera surtout modifié en dehors du container, donc la consistence est prioritairement dans ce sens
       # 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:
     depends_on:
       - db
       - db
       - es
       - es
@@ -286,7 +272,7 @@ services:
     restart: always
     restart: always
     volumes:
     volumes:
       - ./apps/opentalent:/var/source/opentalent:cached
       - ./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/vendor:/var/source/vendor:delegated
       - ./apps/opentalent-config:/var/source/config:cached
       - ./apps/opentalent-config:/var/source/config:cached
     environment:
     environment:
@@ -313,7 +299,7 @@ services:
     image: elasticsearch:2.4.6-alpine
     image: elasticsearch:2.4.6-alpine
     restart: always
     restart: always
     volumes:
     volumes:
-      - ./elasticsearchdata:/usr/share/elasticsearch/data
+      - elasticsearchdata:/usr/share/elasticsearch/data
       - ./docker/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:cached
       - ./docker/elasticsearch/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:cached
     environment:
     environment:
       - cluster.name=docker-cluster
       - cluster.name=docker-cluster
@@ -383,35 +369,32 @@ services:
 #      - php70
 #      - php70
 #      - ap2i
 #      - 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:
 volumes:
   mysqldata: ~
   mysqldata: ~
   elasticsearchdata: ~
   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 \
     apt-utils \
     gnupg
     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 \
                                                 openssh-server build-essential \
                                                 xorg iputils-ping libxrender-dev  \
                                                 xorg iputils-ping libxrender-dev  \
                                                 wget gdebi ca-certificates wget xz-utils \
                                                 wget gdebi ca-certificates wget xz-utils \
@@ -66,8 +65,8 @@ RUN version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \
 ########   BLACKFIRE #########
 ########   BLACKFIRE #########
 
 
 ######## XDebug ########
 ######## XDebug ########
-RUN pecl install xdebug; \
-    docker-php-ext-enable xdebug;
+#RUN pecl install xdebug; \
+#    docker-php-ext-enable xdebug;
 
 
 ######## Php conf ########
 ######## Php conf ########
 COPY /.ssh /root/.ssh
 COPY /.ssh /root/.ssh

+ 12 - 1
docker/mariaDb/Dockerfile

@@ -18,7 +18,6 @@ RUN apt-get update && \
 
 
 ## COMPOSER
 ## COMPOSER
 RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"; \
 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 composer-setup.php; \
     php -r "unlink('composer-setup.php');"; \
     php -r "unlink('composer-setup.php');"; \
     mv composer.phar /usr/local/bin/composer;
     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/
 COPY /docker/mariaDb/conf/my.cnf /etc/mysql/conf.d/
 
 
 WORKDIR /usr/src
 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
     # Allow root for bower
     echo '{ "allow_root": true }' > /root/.bowerrc;
     echo '{ "allow_root": true }' > /root/.bowerrc;
 
 
-RUN npm install;
 
 
 COPY ./docker/node/entrypoint.sh /home/entrypoint.sh
 COPY ./docker/node/entrypoint.sh /home/entrypoint.sh
 RUN chmod +x /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; \
     npm install elasticdump@3.3.7 -g; \
     ## COMPOSER
     ## COMPOSER
     php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"; \
     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 composer-setup.php; \
     php -r "unlink('composer-setup.php');"; \
     php -r "unlink('composer-setup.php');"; \
     mv composer.phar /usr/local/bin/composer; \
     mv composer.phar /usr/local/bin/composer; \