Déploiement d'une application Java avec Docker via IntelliJ IDEA

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 :

  1. Modification du code
  2. Exécution de package
  3. Lancement du conteneur mis à jour

Étiquettes: Docker IntelliJ-IDEA spring-boot Maven Java

Publié le 3 août à 22h05