ソースを参照

Merge branch 'master' of
git@gitlab.2iopenservice.com:opentalent/docker.git

Conflicts:
docker-compose.yaml

Olivier Massot 3 年 前
コミット
2b74c4ca1c
7 ファイル変更129 行追加64 行削除
  1. 2 0
      .gitignore
  2. 71 0
      README.md
  3. 33 50
      docker-compose.yml
  4. 10 10
      docker/ap2i/Dockerfile
  5. 12 1
      docker/mariaDb/Dockerfile
  6. 0 1
      docker/node/Dockerfile
  7. 1 2
      docker/php/Dockerfile

+ 2 - 0
.gitignore

@@ -18,3 +18,5 @@
 /docker/nginx-proxy/certs/*
 !/docker/nginx-proxy/certs/ssl_keys.sh
 .DS_Store
+docker-compose-dev.yml
+docker-sync.yml

+ 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
@@ -111,16 +104,9 @@ services:
       - APP_DEBUG=1
     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
@@ -288,7 +274,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:
@@ -315,7 +301,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
@@ -385,35 +371,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: ~

+ 10 - 10
docker/ap2i/Dockerfile

@@ -9,21 +9,20 @@ 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 \
                                                 libxrender1 libxt6 libxtst6 fontconfig \
                                                 libpng-dev libicu-dev g++ \
                                                 git nano acl procps libmagickwand-dev imagemagick libtidy-dev \
-                                                libssl-dev libpng-dev zlib1g-dev libzip-dev zip; \
+                                                libssl-dev libpng-dev zlib1g-dev libzip-dev zip libxslt-dev; \
     # Install wkhtmltopdf and wkhtmltoimage \
     wget http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.27-3ubuntu1.5_amd64.deb; \
     dpkg -i multiarch-support_2.27-3ubuntu1.5_amd64.deb; \
@@ -41,6 +40,7 @@ RUN     docker-php-ext-configure intl; \
         docker-php-ext-enable exif; \
         docker-php-ext-enable tidy; \
         docker-php-ext-install zip; \
+        docker-php-ext-install xsl; \
         # IMAGICK
         pecl install imagick-3.4.3RC2; \
         docker-php-ext-enable imagick; \
@@ -66,8 +66,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

+ 1 - 2
docker/php/Dockerfile

@@ -23,8 +23,7 @@ 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 --1; \
+    php composer-setup.php; \
     php -r "unlink('composer-setup.php');"; \
     mv composer.phar /usr/local/bin/composer; \
     ## GIT, NANO, ACL, PROPCS, LIBZIP, IMAGICK