Deploiement - Gestionnaire de packages
Compositions docker
Tous les composants de notre application ont été publiés dans des images dockers produites automatiquement avec Travis-ci. Les Dockerfile sont donc disponible sur les dépôts git du projet et les images sont publié dans l'organisation Packebian sur Dockerhub .
Backend-controller
Le backend controller est une API composée de deux containers :
- sails : L'application sails . Ce container est produit à partir de l'image packebian/backend-controller qui est construite à partir de ce Dockerfile
- mongodb : La base de donnée de l'API. Ce containeur est produit à partir de ce fichier Dockerfile
docker-compose.yml
version: '2'
services:
# -------------------------------------------
# ------------------ Sails ------------------
# -------------------------------------------
# sails container
sails:
image: packebian/backend-controller:stable
tty: true
ports:
- "1337:1337"
links:
- "mongodb:mongodb"
environment:
# Sails
SAILS_SECRET: "c9693b2d5572ffd96a79cae6a8453d57"
# Mongo
MONGO_HOST: "mongodb"
MONGO_PORT: "27017"
MONGO_DB: "packebian"
MONGO_USER: "packebian"
MONGO_PASS: "packebian123"
# Auth0
AUTH0_SECRET: "secret"
AUTH0_ALGO: "HS256"
AUTH0_ENDPOINT: "https://packebian.eu.auth0.com"
# JWT
JWT_SECRET: "secret"
JWT_LIFE: 3600
JWT_ALGO: "HS256"
JWT_ISSUER: "packebian.com"
JWT_AUDIENCE: "packebian.com"
# ----------------------------------------------
# ------------------ Database ------------------
# ----------------------------------------------
# Mongodb
mongodb:
build: ./builds/mongo
tty: true
restart: always
volumes:
- "mongoVolume:/data/db"
ports:
- "27017:27017"
environment:
ADMIN_USER: "root"
ADMIN_PASS: "mongdb123"
MONGO_DB: "packebian"
MONGO_USER: "packebian"
MONGO_PASS: "packebian123"
volumes:
mongoVolume:
driver: local
L'image utilisée pour le container mongodb n'est pas publiée. Nous vous conseillons donc d'utiliser cette composition en partant de ce dépot github
Frontend
L'image de l'application Frontend Angular produit est créé à partir de ce Dockerfile
docker-compose.yml
version: '2'
services:
# -------------------------------------------
# ----------------- Angular -----------------
# -------------------------------------------
# sails container
frontend:
image: packebian/frontend:stable
tty: true
ports:
- "9000:9000"
- "35729:35729"
environment:
API_URL: "http://192.168.99.100:1337" # URL to backend-controller API
Backend-builder
Le builder est lui aussi dans une image docker. Une simple commande dans un terminal permet de le lancer et de récupérer le package .deb dans un dossier. Voici quelques exemples de son utilisation :
builder-ant.sh
#!/bin/sh
docker run -ti -v $(pwd)/built-ant:/builder/built \
packebian/backend-builder:0.2.1 \
build \
--repository=https://github.com/KingBabou/builder-ant.git \
--package=builder-ant \
--tag=1.0
builder-gradle.sh
#!/bin/sh
docker run -ti -v $(pwd)/built-gradle:/builder/built \
packebian/backend-builder:0.2.1 \
build \
--repository=https://github.com/KingBabou/builder-gradle.git \
--package=builder-gradle \
--tag=1.0
builder-maven.sh
#!/bin/sh
docker run -ti -v $(pwd)/built-maven:/builder/built \
packebian/backend-builder:0.2.1 \
build \
--repository=https://github.com/KingBabou/builder-maven.git \
--package=builder-maven \
--tag=1.0
builder-procesim.sh
#!/bin/sh
docker run -ti -v $(pwd)/built-procesim:/builder/built \
packebian/backend-builder:0.2.1 \
build \
--repository=https://github.com/KingBabou/procesim.git \
--package=procesim \
--tag=1.0
builder-puissance4.sh
#!/bin/sh
docker run -ti -v $(pwd)/built-puissance4:/builder/built \
packebian/backend-builder:0.2.1 \
build \
--repository=https://github.com/KingBabou/puissance4.git \
--package=puissance4 \
--tag=1.0