/ serveur

[Mémo] Docker - Mise en place de plusieurs applications Web

Avec l'ouverture du blog, j'ai décidé de mettre en place de nouveaux outils et de nouvelles connaissances à commencer par l'hébergement du blog.

Je loue un serveur Kimsufi chez OVH, donc un serveur dédié ou je suis libre de faire ce que je veux. Sur ce serveur j'ai mis en place Docker qui permet de "cloisonner" les applications ou services sur un ordinateur.

Ici je souhaites distinguer les différents sites que j'héberge sans qu'il ne se gènes entre eux.

La suite de l'article est une sorte de mémo pour les prochaines fois ou j'ai à utiliser Docker.

Architecture du serveur

- /home/user/
    - site1/
        - data/
        - docker-compose.yml
    - site2/
        - data/
        - docker-compose.yml

Serveur frontal Nginx

docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock -t jwilder/nginx-proxy

Mise en place d'un network pour Nginx

docker network create proxy-nginx

Ajouter une application

Avec docker run

docker run -e VIRTUAL_HOST=foo.bar.com -t ...

Avec docker-compose (exemple avec Ghost)

version: '3.1'

services:
  ghost:
    container_name: {server_name}-ghost
    image: ghost
    restart: always
    network_mode: "bridge"
    volumes:
      - ./public/ghost:/var/lib/ghost/content
    environment:
      - NODE_ENV=production
      - VIRTUAL_HOST={hostname}
      - url=http://{hostname}

Get IP of container

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' CONTAINER

Mise en place d'un Network dédié

Futur :

  • HTTPS avec Let's Encrypt
  • Démarrage automatique du docker-compose
  • [OK] Changer ngnix-proxy par un container nginx pour gérer les vhosts
  • [OK] Network autre que bridge
Sources :