Configuration du serveur Docker
Démarrer les serveurs de base de données avec une seule commande
Configuration du serveur Docker
Note historique : il s’agit d’une référence de développement local de 2015. Elle est utile pour comprendre l’ancien flux de travail, mais ne traitez pas ces extraits comme des conseils de production actuels. Les fichiers Docker Compose modernes, les réseaux personnalisés, les versions d’image figées, l’authentification, les secrets, la gestion des mises à jour sont aujourd’hui des paramètres plus sûrs.
À qui s’adresse ce guide ?
- Vous avez déjà souhaité tester une application avec une base de données « jetable » ?
- Vous avez hérité d’un code suspect ? Vous préférez ne pas partager l’accès à votre base de données existante ?
- Vous travaillez avec des clients sensibles à la sécurité ? Ne prenez pas le risque de contamination croisée ! Utilisez des conteneurs et contrôlez la persistance des données !
- Vous ne pouvez pas mettre à jour votre environnement de développement vers la dernière version de la base de données parce que vos applications legacy dépendent d’une version MySQL vieille de 12 ans ?
Ne laissez jamais ces raisons vous bloquer !
Liens rapides vers les commandes en une ligne
Cet article propose des commandes d’une ligne pour lancer les bases de données les plus populaires, dont :
Note : Ces commandes sont conçues comme des raccourcis pour le développement local. Si vous les adaptez à la production, ajoutez d’abord l’authentification, la gestion des secrets, les sauvegardes, les politiques réseau, des images figées et un plan de mise à jour.
Utilisateurs Docker avancés : Si vous maîtrisez
docker-compose, vous pouvez convertir les commandes shell ci‑dessous en entrées de votre fichierdocker-compose.yml.
Serveur Postgres
Démarrez un conteneur en le nommant
pg-localhost
# Stockez les fichiers de la base de données sur un chemin local, en dehors du conteneurmkdir -p $HOME/.postgres-data
docker run \ --name pg-localhost \ -p 127.0.0.1:5432:5432 \ -e POSTGRES_PASSWORD=password \ --restart unless-stopped \ -it \ --shm-size=256mb \ postgres:16-alpine \ postgres -c 'listen_addresses=*' \ -c 'password_encryption=scram-sha-256' \ -c 'shared_memory_type=sysv' \ -c 'shared_buffers=256MB' \ -c 'max_connections=200'Ajustez les options de ligne de commande selon vos besoins. (Les arguments du démon postgres commencent après le nom de l’image Docker
postgres:16-alpine. Voirpostgres -c 'listen_addresses=*'...)
Accédez à l’invite
psqlen tant qu’utilisateur postgres
docker exec --user postgres -it pg-localhost psqlAccédez au shell du conteneur en tant que root
docker exec -it pg-localhost bashNote : La commande ci‑dessus utilise les images de base officielles Alpine Linux. Ce n’est pas votre environnement Debian habituel.
Pour utiliser l’image de base debian/ubuntu, remplacez
postgres:12-alpineparpostgres:12.
Serveur MongoDB
mkdir -p $HOME/.mongodb/data
docker run -d \ --name mongodb \ --restart on-failure:5 \ -p 127.0.0.1:27017:27017 \ -v $HOME/.mongodb:/data \ mongo:7 \ bash -c 'mongod --bind_ip 0.0.0.0'Une fois votre serveur configuré, vérifiez que vos données se trouvent dans $HOME/.mongodb avec :
ls -lach $HOME/.mongodbConnectons‑nous au serveur avec l’outil CLI mongosh. (Si vous ne l’avez pas installé, voir ci‑dessous.)
#> Using default arguments:mongoshEt vous devriez voir quelque chose comme :

Installation des outils CLI Mongo
Avec brew & macOS
brew tap mongodb/brewbrew install mongodb-community-shellServeur MySQL
AVERTISSEMENT : MODIFIEZ LE MOT DE PASSE DANS
MYSQL_ROOT_PASSWORDCI‑DESSOUS.
mkdir -p $HOME/.mysql
docker run -d \ -v $HOME/.mysql:/var/lib/mysql \ -p 127.0.0.1:3306:3306 \ --name mysql-$USER \ -e MYSQL_DATABASE=$USER \ -e MYSQL_ROOT_HOST='172.*.*.*' \ -e MYSQL_ROOT_PASSWORD='p@ssw0rd' \ mysql/mysql-server:8Serveur ElasticSearch
mkdir -p $HOME/.elastic
docker run -d \ --name elastic \ -p 127.0.0.1:9200:9200 \ -p 127.0.0.1:9300:9300 \ -v $HOME/.elastic:/data \ docker.elastic.co/elasticsearch/elasticsearch:8.15.5 bash -c 'elasticsearch --cluster.name elastic_cluster --node.name elastic01 --path.data /data/elastic-data --path.logs /data/elastic-logs 'Notes de sécurité
NOTE : l’option de port de type
-p 127.0.0.1:27017:27017empêche tout accès à votre instance sauf depuis le réseau localhost du serveur Docker.
Pour « publier » les ports exposés, retirez le préfixe d’adresse IP locale afin de permettre l’accès externe :-p 27017:27017. Assurez‑vous d’avoir pris les précautions de sécurité nécessaires.
Recommandé : utilisez toujours un outil de scan de ports (comme nmap ou masscan) pour vérifier votre configuration réseau (depuis un système distinct sur un autre réseau).
Maintenant que vous avez les commandes pour démarrer vos serveurs de bases de données, l’étape suivante consiste à empaqueter votre application en image Docker. La partie 2 se poursuit ci‑dessous :
Empaquetage d’une application Web NodeJS
- Ajoutez un fichier vide nommé
Dockerfileà la racine de votre projet. - (Optionnel, recommandé) Ajoutez un fichier
.dockerignoreen vous basant sur les règles de.gitignoreafin d’exclure les chemins volumineux et non essentiels. Par défaut, tous les fichiers du projet sont inclus.
Créez un Dockerfile à la racine de votre application
# Exemple pour NodeJSFROM node:22EXPOSE 3000COPY . /app/WORKDIR /appRUN apt-get update && apt-get dist-upgrade -yqqRUN ["npm", "install"]
# Commande sur‑définissableCMD ["npm", "start"]Il est plus simple de montrer comment démarrer avec le Dockerfile et de démontrer le résultat via la console (voir les commandes ci‑dessous).
Dans le terminal, cd dans le dossier de votre projet et exécutez la commande build suivante à chaque fois que vous déployez des modifications — ou que vous souhaitez changer/mettre à jour le système d’exploitation ou la configuration d’environnement)
docker build -t app-name-here .Référence des commandes Docker essentielles
Construire une image Docker
docker build -t app-name-here .Créer/Exécuter l’application Web avec des liens vers les serveurs DB
docker network create app-localdocker network connect app-local mongodbdocker network connect app-local elasticdocker run -d --name webapp01 --network app-local -p 3000:3000 app-name-hereExécution interactive (non‑daemon, dans le terminal)
docker run -it --name webapp01 --network app-local -p 3000:3000 app-name-here bashSuppression d’une instance de conteneur ou d’une image
Important : toute donnée qui n’est pas stockée sur un volume monté sera perdue !!
# Supprimer l’imagedocker rmi -f app-name-heredocker rm -f webapp01# maintenant relancez votre `docker run...` depuis ^^^# Par exemple, pour arrêter vos instances de bases de données ci‑dessus, exécutez : (départ avec quelque chose comme `docker stop {mongo,elastic}` )docker rm -f mongo elastic