Configurer l'environnement de développement
Pour automatiser le déploiement d'une application Spring Boot sous forme de conteneur Docker depuis IntelliJ IDEA, il est nécessaire de configurer correctement l'IDE ainsi que l'hôte Docker distant.
Installation du plugin Docker dans IntelliJ IDEA
Ouvrez IntelliJ IDEA, allez dans Settings > Plugins, recherchez Docker et installez l’extension officielle. Redémarrez l’IDE après l’installation.
Préparation du serveur Linux avec Docker
Sous une distribution Linux (par exemple Ubuntu), installez Docker avec la commande suivante :
curl -sSL https://get.daocloud.io/docker | sh
Activez ensuite l'accès distent à l'API Docker en modifiant le fichier de configuration /etc/docker/daemon.json :
{
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"],
"experimental": false
}
Redémarrez le service Docker :
sudo systemctl restart docker
Ouvrez le port 2375 via le firewall si nécessaire :
sudo ufw allow 2375
⚠️ Attention : Activer l'API Docker sans authentification sur un réseau public est un risque majeur de sécurité. En prdouction, utilisez TLS pour sécuriser les communications.
Connexion d'IntelliJ à l'hôte Docker distant
Dans IntelliJ IDEA, accédez à Settings > Build > Docker. Cliquez sur + pour ajouter une nouvelle configuratino. Sélectionnez Docker TCP et entrez l'URL :
tcp://192.168.199.11:2375
Cliquez sur Test Connection pour valider la connectivité. Une fois confirmée, sauvegardez la configuration.
Création d'un projet Spring Boot avec intégration Docker
Voici un extrait de pom.xml configuré pour construire automatiquement une image Docker lors de l'étape package :
<properties>
<java.version>1.8</java.version>
<docker.image.prefix>demo-app</docker.image.prefix>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<imageTags>
<imageTag>latest</imageTag>
</imageTags>
<dockerHost>http://192.168.199.11:2375</dockerHost>
<dockerDirectory>${project.basedir}</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
</plugins>
</build>
Écriture du Dockerfile
À la racine du projet, créez un fichier nommé Dockerfile :
# Image de base
FROM openjdk:8-jre-slim
# Auteur
LABEL maintainer="dev-team@example.com"
# Création d’un volume temporaire
VOLUME /tmp
# Copie du JAR produit
ADD target/demoxxx-0.0.1-SNAPSHOT.jar app.jar
# Exposition du port applicatif
EXPOSE 8080
# Commande de démarrage
ENTRYPOINT ["java", "-jar", "/app.jar"]
Déploiement automatisé
Lorsque vous exécutez mvn clean package, le plugin Maven construit non seulement le JAR mais aussi l'image Docker sur l'hôte distant. Dans IntelliJ, vous pouvez associer cette étape à une configuration de type Maven Run Configuration.
Après le packaging, utilisez simplement une tâche de type Docker Deployment dans l’IDE pour lancer un conteneur basé sur la dernière image générée.
Le flux de travail devient alors :
- Modification du code
- Exécution de
package - Lancement du conteneur mis à jour