Comment construire des images Docker Flower localement

Flower fournit des images Docker pré-fabriquées sur Docker Hub qui incluent toutes les dépendances nécessaires pour exécuter SuperLink, SuperNode ou ServerApp. Vous pouvez également créer vos propres images Docker personnalisées à partir de zéro avec une version différente de Python ou d’une distribution Linux (Ubuntu/Alpine) si cela est ce que vous avez besoin. Dans ce guide, nous expliquerons quelles images existent et comment les construire localement.

Avant de commencer, nous devons rencontrer quelques prérequis dans notre environnement de développement local.

  1. Clonez le dépôt flower.

    $ git clone --depth=1 https://github.com/flwrlabs/flower.git && cd flower
    
  2. Vérifiez que le démon Docker tourne.

    Les instructions de construction qui assemblent les images se trouvent dans les fichiers Docker respective. Vous pouvez les trouver dans les sous-répertoires de framework/docker.

    Flower et Docker images sont configurées via des arguments de construction. À travers les arguments de construction, nous pouvons rendre la création d’images plus flexible. Par exemple, dans l’image de base, nous pouvons spécifier la version de Python à installer en utilisant l’argument de construction PYTHON_VERSION. Certains des arguments de construction ont des valeurs par défaut, tandis que d’autres doivent être spécifiés lors de la construction de l’image. Tous les arguments de construction disponibles pour chaque image sont listés dans une des tables ci-dessous.

Construire l’image de base

Argument de construction

Description

Required

Exemple

DISTRO

La distribution Linux à utiliser comme image de base.

No

ubuntu

DISTRO_VERSION

Version de la distribution Linux.

No

24.04

PYTHON_VERSION

Version de python à installer.

No

3.11 or 3.11.1

PIP_VERSION

Version de pip à installer.

Yes

26.0.1

SETUPTOOLS_VERSION

Version de setuptools à installer.

Yes

82.0.0

FLWR_VERSION

Version de Flower à installer.

Yes

1.31.0

FLWR_PACKAGE

Le paquet Flower à installer.

No

flwr or flwr-nightly

FLWR_VERSION_REF

Un direct reference sans spécificateur @. Si les deux FLWR_VERSION et FLWR_VERSION_REF sont spécifiés, le FLWR_VERSION_REF a la priorité.

No

Exemples de référence directe

L’exemple suivant crée une image base Ubuntu/Alpine avec Python 3.11.0, pip |pip_version|, setuptools |setuptools_version| et Flower |stable_flwr_version|:

$ cd framework/docker/base/<ubuntu|alpine>
$ docker build \
  --build-arg PYTHON_VERSION=3.11.0 \
  --build-arg FLWR_VERSION=1.31.0 \
  --build-arg PIP_VERSION=26.0.1 \
  --build-arg SETUPTOOLS_VERSION=82.0.0 \
  -t flwr_base:0.1.0 .

Dans cet exemple, nous spécifions notre nom d’image comme flwr_base et la balise comme 0.1.0. Rappelez-vous que les arguments de construction ainsi que le nom et la balise peuvent être adaptés à vos besoins. Ces valeurs servent uniquement d’exemple.

Construire une image binaire Flower

Argument de construction

Description

Required

Exemple

BASE_REPOSITORY

Le nom du dépôt de l’image de base.

No

flwr/base

BASE_IMAGE

La balise de l’image de base Flower.

Yes

1.31.0-py3.11-ubuntu24.04

Par exemple, pour construire une image SuperLink avec la dernière version de Flower, Python 3.11 et Ubuntu 22.04, exécutez les commandes suivantes:

$ cd framework/docker/superlink
$ docker build \
  --build-arg BASE_IMAGE=1.31.0-py3.11-ubuntu22.04 \
  -t flwr_superlink:0.1.0 .

Si vous souhaitez utiliser votre propre image de base au lieu de l’image officielle de Flower, tout ce que vous devez faire est de définir l’argument de construction BASE_REPOSITORY sur flwr_base (comme nous avons spécifié ci-dessus).

$ cd framework/docker/superlink/
$ docker build \
  --build-arg BASE_REPOSITORY=flwr_base \
  --build-arg BASE_IMAGE=0.1.0
  -t flwr_superlink:0.1.0 .

Après avoir créé l’image, nous pouvons tester si l’image fonctionne :

$ docker run --rm flwr_superlink:0.1.0 --help

Exemples de référence directe

# main branch
git+https://github.com/flwrlabs/flower.git@main#subdirectory=framework

# commit hash
git+https://github.com/flwrlabs/flower.git@4bc1bca3d0576dd2233972d9d91c2c7e8eb03edd#subdirectory=framework

# tag
git+https://github.com/flwrlabs/flower.git@1.31.0#subdirectory=framework

# artifact store
https://artifact.flower.ai/py/main/latest/flwr-1.31.0-py3-none-any.whl