Bonsoir,

Je souhaite à terme intégrer un serveur web (LEMP ou LAMP) sur le domaine principal. Ensuite, j'ai plusieurs sous-domaines sur lesquels je voudrais installer des services indépendant avec Docker. Est-il possible d'avoir une DB commune pour tous les dockers ? laster13 ainsi, ça donnerait :

site1.fr : LAMP ou LEMP port 80

sub1.site1 : Codiad port 1490
sub2.site1 : Cozy port 734
sub3.site1 : Koel port 1816
sub4.site1 : Jitsi port 2000

    Glodi ok je m'y colle 🙂
    Si tu réussis de ton coté dis le moi que je ne poursuive pas pour rien

      Je vais essayer de m'occuper de ça ce WE 🙂 Il faut aussi que je paramètre le reverse proxy nginx et que je fasse un script shell pour activer les services. Par défaut, seul le site est démarré, les autres services se lanceront au cas par cas avec un script.

      laster13 Je te tiens au jus de l'avancée de mes travaux. 😉

      J'ai des erreurs sur mon fichier docker-compose.yml... J'ai pourtant vérifié toutes les tabulations et l'indentation, sans succès. Je verrais ça plus en détail demain et au besoin je retaperai tout le fichier à la main au lieu de le copier directement depuis notepad++ sous windows.

      root@scw-1e49a4:~/docker-compose# docker-compose up -d
      ERROR: yaml.scanner.ScannerError: while scanning for the next token
      found character '\t' that cannot start any token
        in "./docker-compose.yml", line 48, column 31

      L'idée au final étant de ne créer qu'un seul docker-compose dans lequel on mettra tout. Je te poste un début avec koel, histoire que tu essaies, et je continue pour la suite 🙂

      version: '2'
      
      services:
      
      nginx-proxy:
      restart: always
      image: jwilder/nginx-proxy
      ports:
        - "80:80"
        - "443:443"
      volumes:
        - /srv/docker/nginx/certs:/etc/nginx/certs:ro
        - /etc/nginx/vhost.d
        - /usr/share/nginx/html
        - /var/run/docker.sock:/tmp/docker.sock:ro
      
      nginx-proxy-companion:
      image: jrcs/letsencrypt-nginx-proxy-companion
      volumes:
         - /srv/docker/nginx/certs:/etc/nginx/certs:rw
         - /var/run/docker.sock:/var/run/docker.sock
      volumes_from:
         - nginx-proxy
      
        
      koel:
      container_name: koel
      image: etopian/docker-koel
      depends_on:
          - mariadb
      ports:
          - "9876:80"
      environment:
          - VIRTUAL_HOST=koel.domain.ldt
          - LETSENCRYPT_HOST=koel.domain.ldt
          - LETSENCRYPT_EMAIL=XXXXX@gmail.com
          - DB_HOST=mariadb
          - DB_DATABASE=forge
          - DB_USERNAME=root
          - DB_PASSWORD=XXXXXX
          - ADMIN_EMAIL=koel@example.com
          - ADMIN_NAME=admin
          - ADMIN_PASSWORD=admin
          - APP_DEBUG=true
          - AP_ENV=production
      volumes:
         - /mnt/music/:/DATA/music/:ro
      
      mariadb:
       image: mariadb:10.1
       container_name: mariadb
       environment:
         - MYSQL_ROOT_PASSWORD=XXXXXX
         - MYSQL_PASSWORD=XXXXXX
         - MYSQL_DATABASE=forge
       volumes:
         - /mnt/docker/mysql/db:/var/lib/mysql

      Une fois les containers lancés tu tapes la commande suivante

      docker exec koel su nginx -c "cd /DATA/htdocs && php artisan init"

      Tu n'as plus qu'à pointer sur ton sous domaine qui en plus sera en https

      Remplace par tes mots de passe, ton sous domaine etc.. pense à recaler le docker-compose au niveau tabulation

      Ok, je teste ça ce soir. J'ai essayé d'installer tous les services individuellement, ça marche. J'ai des problèmes seulement quand je commence à utiliser deux services et qu'il y en a un sur le port 80 et l'autre sur le 443...

      Merci beaucoup, je te tiens au courant 🙂

      J'ai une erreur avec ton docker-compose.

      ERROR: client and server don't have same version (client : 1.22, server: 1.18)

      Après avoir consulté les docs de docker-compose, il faut utiliser la variable d'environnement :

      COMPOSE_API_VERSION=auto

      D'après le site (http://stackoverflow.com/questions/29377853/how-to-use-environment-variables-in-docker-compose), il faut créer un troisième fichier template.yml mais ça ne marche pas...

      J'ai résolu mon problème en désinstallant docker et en le réinstallant avec la commande :

      curl -fsSL https://get.docker.com/ | sh

      Tout marche bien désormais, si ce n'est que Koel est en http et pas en https.

      Vérifie dans ce dossier si tes clés sont bien présentes

      /srv/docker/nginx/certs

      Par ailleurs as tu un service qui exploite deja le port 443 ? Ce qui pourrait peu etre expliquer pourquoi tu n'es pas en https

      Pour cosy tu rajoutes ça dans le docker-compose

      cozy:
      container_name: cozy
      image: cozy/full
      environment:
          - VIRTUAL_HOST=site.domaine.com
          - LETSENCRYPT_HOST=site.domaine.com
          - LETSENCRYPT_EMAIL=XXXXX@gmail.com

      J'ai maintenant une erreur PHP sur le sous domaine koel avec le nouveau docker-compose .

      RuntimeException in compiled.php line 7020: No supported encrypter found. The cipher and / or key length are invalid.
      
      in compiled.php line 7020
      at EncryptionServiceProvider->Illuminate\Encryption\{closure}(object(Application), array()) in compiled.php line 1284
      at Container->build(object(Closure), array()) in compiled.php line 1237
      at Container->make('encrypter', array()) in compiled.php line 1775
      at Application->make('Illuminate\Contracts\Encryption\Encrypter') in compiled.php line 1329
      at Container->resolveClass(object(ReflectionParameter)) in compiled.php line 1313
      at Container->getDependencies(array(object(ReflectionParameter)), array()) in compiled.php line 1299
      at Container->build('App\Http\Middleware\EncryptCookies', array()) in compiled.php line 1237
      at Container->make('App\Http\Middleware\EncryptCookies', array()) in compiled.php line 1775
      at Application->make('App\Http\Middleware\EncryptCookies') in compiled.php line 9577
      at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in compiled.php line 2983
      at CheckForMaintenanceMode->handle(object(Request), object(Closure))
      at call_user_func_array(array(object(CheckForMaintenanceMode), 'handle'), array(object(Request), object(Closure))) in compiled.php line 9577
      at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
      at call_user_func(object(Closure), object(Request)) in compiled.php line 9567
      at Pipeline->then(object(Closure)) in compiled.php line 2249
      at Kernel->sendRequestThroughRouter(object(Request)) in compiled.php line 2232
      at Kernel->handle(object(Request)) in index.php line 53

      Et après avoir fait la MaJ Cozy, j'ai une page 502 :

      502 Bad Gateway nginx/1.10.1

      C'est parce que tu as oublié de taper la ligne de commande

      docker exec koel su nginx -c "cd /DATA/htdocs && php artisan init"

        laster13 Effectivement ça marche. Par contre, les maj de Cozy m'ont fait planter mon docker...

        J'ai aussi réfléchi à un détail important. N'est-il pas intéressant d'héberger mon site chez un hébergeur (hébergeur gratuit type hostinger) et de faire pointer mon nom de domaine dessus ? Cela me permet d'éviter qu'on puisse remonter sur mon VPS et surtout cela économise de la place. Le seul soucis est l'impossibilité d'avoir un site en https...

          Glodi J'ai aussi réfléchi à un détail important. N'est-il pas intéressant d'héberger mon site chez un hébergeur (hébergeur gratuit type hostinger) et de faire pointer mon nom de domaine dessus ? Cela me permet d'éviter qu'on puisse remonter sur mon VPS et surtout cela économise de la place. Le seul soucis est l'impossibilité d'avoir un site en https...

          Le miens est également sur un VPS, la bande passante est bonne et il ne prend pas de place. Pense à le sécuriser avec fail2ban, portsentry, et interdit l'acces root dans le fichier sshd_config ainsi que le port.
          https://mondedie.fr/d/5318-Tuto-Securisation-Logs-V-3-nginx

          Je complète le docker-compose en considérant que tu as un site WordPress qui sera donc sur le domaine principal.
          Du coup la base de donnée de WordPress se crée toute seule. Au final que deux bases de données, une pour koel et l'autre pour WordPress. Les autres services n'en ont pas besoin.

          codiad:
           container_name: codiad
           image: wernight/codiad
           environment:
              - VIRTUAL_HOST=codiad.domaine.com
              - LETSENCRYPT_HOST=codiad.domaine.com
              - LETSENCRYPT_EMAIL=xxxxx@gmail.com
          
          wordpress:
          image: wordpress
          depends_on:
             - mariadb
          environment:
             - VIRTUAL_HOST=domaine.com
             - LETSENCRYPT_HOST=domaine.com
             - LETSENCRYPT_EMAIL=xxxxx@gmail.com
             - WORDPRESS_DB_HOST=mariadb
             - WORDPRESS_DB_PASSWORD=xxxxx
             - WORDPRESS_DB_USER=root
             - WORDPRESS_DB_NAME=wordpress
             - MYSQL_ROOT_PASSWORD=xxxxxxx
             - MYSQL_PASSWORD=xxxxxxx

          Effectivement cosy semble planter à la mise à jour .. je vais jeter un œil, quelques soucis aussi avec jitsi mais bon on avance 🙂

          Salut,

          Si tu veux, j'ai créé une image docker de reverse proxy (nginx) qui auto-génère la configuration, ainsi que les certificats ssl avec letsencrypt.

          Plus d'information ici

          Pour faire simple, tout ce joue avec les labels, voici un exemple :

          version: '2'
          
          networks:
            default:
              driver: bridge
          
          services:
            reverse:
              image: xataz/nginx:1.11
              container_name: reverse
              ports:
                - "80:8080"
                - "443:8443"
              environment:
                - EMAIL=contact@site1.fr 
                - UID=1000
                - GID=1000
              volumes:
                - /srv/docker/nginx/ssl:/nginx/ssl
                - /srv/docker/nginx/log:/nginx/log
              depends_on:
                - codiad
                - cozy
                - koel
                - jitsi
          
            codiad:
              blablabla
              blablabla
              labels:
                - reverse.backend.port=1490
                - reverse.frontend.domain=sub1.site1.fr 
                - reverse.frontend.ssl=true
          
            cozy:
              blablabla
              blablabla
              labels:
                - reverse.backend.port=734
                - reverse.frontend.domain=sub2.site1.fr 
                - reverse.frontend.ssl=true
          
            koel:
              blablabla
              blablabla
              labels:
                - reverse.backend.port=1816
                - reverse.frontend.domain=sub3.site1.fr 
                - reverse.frontend.ssl=true
          
            jitsi:
              blablabla
              blablabla
              labels:
                - reverse.backend.port=2000
                - reverse.frontend.domain=sub4.site1.fr 
                - reverse.frontend.ssl=true

          Et voila ça marche ^^ (enfin normalement)

            Mon site n'utilise pas wordpress. C'est un site statique en HTML, CSS, javascript et PHP. Effectivement, j'ai des erreurs pour l'installation de jitsi.

            xataz Est-ce que ça change vraiment par rapport à la conf précédente ?

            Pour jitsi, j'ai essayé le bloc suivant :

            videobridge:
              image: mdlavin/jitsi
              environment:
                JITSI_SECRET=mdp
                JITSI_DOMAIN=jitsi.domaine.com
                JITSI_HOST=jitsi.domaine.com
                LETSENCRYPT_HOST=jitsi.domaine.com
                LETSENCRYPT_EMAIL=xxxxx@gmail.com

            Rien ne s'affiche, et le docker ne démarre pas... Du coup, j'ai essayé d'installer son rival, Big Blue Button avec le bloc :

            bbb:
              build: .
              ports:
               - "80:80"
              expose:
              #- "80"
              - "9123:9123"
              - "1935:1935"
              environment:
                  SERVER_NAME=bbb.domaine.com
                  SERVER_SALT=5ca422de042242086336aa041f26d79e
                  MOBILE_SALT=03b07
                  VIRTUAL_HOST=bbb.domaine.com
                   BBB_INSTALL_DEMOS: "yes"
                   LETSENCRYPT_HOST=bbb.domaine.com
                   LETSENCRYPT_EMAIL=xxxxx@gmail.com

            Mais à nouveau, rien ne semble démarrer... Je n'ai pas encore testé la solution de xataz

            4 jours plus tard

            Je me suis aperçu que nginx n'acceptait pas les fichiers de plus de 1Mb en upload. Il faut modifier la variable upload_max_filesize dans php.ini et client_max_body_size dans la conf de nginx. Comment je fais ça ? Il faut rentrer dans le docker cozy ? Quelqu'un a du nouveau sur Jitsi ou BBB ?

            Pour mon site, j'ai rajouté :

            php:
                build: .
                image: floatapp/docker-php-apache:5.6-1.0
                ports:
                 - "80:80"
                volumes:
                 - ./apache2/sites-enabled:/etc/apache2/sites-enabled
                 - ./sites:/var/www/html
                 - LETSENCRYPT_HOST=domaine.com
                 - LETSENCRYPT_EMAIL=xxxxx@gmail.com

            Il n'y a pas d'erreurs ?

            Répondre…