Dans ce petit article, le retour de Docker, et plus spécifiquement de docker-compose. J'ai trouvé ce trés bon repository sur Github de Docker himself. On y trouve quelques jolis exemples de containeurs d'applications sympas tout prêts pour l'installation.

Il suffit de "git cloner" le repo' sur votre VPS via SSH.

git clone https://github.com/docker/awesome-compose

Puis se positionner dans le dossier à la racine de celui-ci :

cd awesome-compose

Pré-requis :

  • un VPS Linux Ubuntu 16.04 ou 18.04
  • un poste de travail
  • accès au SSH

Nextcloud avec Redis et MariaDB

Cet exemple définit l'une des configurations de base de Nextcloud. Plus de détails sur la façon de personnaliser davantage l'installation et le fichier de composition peuvent être trouvés sur la page d'image officielle. Lors du déploiement de cette configuration, docker-compose mappe le port de conteneur nextcloud 80 au port 80 de l'hôte comme spécifié dans le fichier de composition.

On envoi le bousin avec docker-compose up -d (pour la permanence de la commande) :

root@vps774209:~/awesome-compose/nextcloud-redis-mariadb# docker-compose up -d
Creating network "nextcloud-redis-mariadb_redisnet" with the default driver
Creating network "nextcloud-redis-mariadb_dbnet" with the default driver
Creating volume "nextcloud-redis-mariadb_db_data" with default driver
Creating volume "nextcloud-redis-mariadb_nc_data" with default driver
Pulling nc (nextcloud:apache)...
apache: Pulling from library/nextcloud
68ced04f60ab: Pull complete
1d2a5d8fa585: Pull complete
5d59ec4ae241: Pull complete
d42331ef4d44: Pull complete

Et on checke une fois le déploiement fini :

/awesome-compose/nextcloud-redis-mariadb# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
7a2c16528b44        mariadb             "docker-entrypoint.s…"   6 minutes ago       Up 5 minutes        3306/tcp                 nextcloud-redis-mariadb_db_1
fe39d637ea68        redis:alpine        "docker-entrypoint.s…"   6 minutes ago       Up 5 minutes        6379/tcp                 nextcloud-redis-mariadb_redis_1
ccd5bfdb4ca9        nextcloud:apache    "/entrypoint.sh apac…"   6 minutes ago       Up 5 minutes        0.0.0.0:80->80/tcp       nextcloud-redis-mariadb_nc_1

Via le navigateur web vers http://ipduvps:80

On crée un compte :

et on profite :

Même principe avec VueJS par exemple :

root@vps774209:~/awesome-compose/vuejs# docker-compose up -d
Creating network "vuejs_default" with the default driver
Building web
Step 1/8 : FROM node:13.10.1-alpine
13.10.1-alpine: Pulling from library/node
aad63a933944: Pull complete
8cfc87a4d6f5: Pull complete
f559e949aed0: Pull complete
f682fe481cb9: Pull complete
Digest: sha256:716162a1bc78c7bdca481be382562c2062ee43d8e3704bb6f2fb64b1ede28f2c
Status: Downloaded newer image for node:13.10.1-alpine
 ---> 8db74ce813f8
Step 2/8 : RUN mkdir /project
 ---> Running in eb06272d31a6

et on checke :

root@vps774209:~/awesome-compose/vuejs# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
8aa9392d9cc0        vuejs_web           "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:8080->8080/tcp   vuejs_web_1

en web sur http://ipduvps:8080

Application React avec un backend Rust et une base de donnée Postgresql

Début :

root@vps774209:~/awesome-compose# cd react-rust-postgres
root@vps774209:~/awesome-compose/react-rust-postgres# docker-compose up -d
Creating network "react-rust-postgres_client-side" with the default driver
Creating network "react-rust-postgres_server-side" with the default driver
Creating volume "react-rust-postgres_backend-cache" with default driver
Creating volume "react-rust-postgres_db-data" with default driver
Building frontend
Step 1/9 : FROM node:lts AS development

Et fin :

Removing intermediate container 9c6a6db8429a
 ---> dc8ec39a18a0
Step 10/13 : COPY . /code
 ---> b004e20e076b

Step 11/13 : FROM base AS development
 ---> b004e20e076b
Step 12/13 : EXPOSE 8000
 ---> Running in 2a91117e583e
Removing intermediate container 2a91117e583e
 ---> c8ecb2c7b464
Step 13/13 : CMD [ "cargo", "run", "--offline" ]
 ---> Running in 1db81af3be6e
Removing intermediate container 1db81af3be6e
 ---> 01523707c16b

Successfully built 01523707c16b
Successfully tagged react-rust-postgres_backend:latest
WARNING: Image for service backend was built because it did not already exist. To rebuild this image you must use `docker-compose build` or `docker-compose up --build`.
Creating react-rust-postgres_frontend_1 ... done
Creating react-rust-postgres_db_1       ... done
Creating react-rust-postgres_backend_1  ... done

Résultat :

Enjoy :)