IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Ubuntu Discussion :

[22.04] Hyper débutante. Impossible de faire fonctionner un docker build à cause de COPY


Sujet :

Ubuntu

  1. #1
    Membre habitué Avatar de Nadinette
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2012
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 264
    Points : 144
    Points
    144
    Par défaut [22.04] Hyper débutante. Impossible de faire fonctionner un docker build à cause de COPY
    Hello hello

    Je pose ça là car je suis sous linux ubuntu et je pense que le problème vient de l'OS même si ça parle de docker.

    Je travaille sur un projet django et je voudrais mettre en place mon CI/CD pour déployer mon projet dans un cluster Kubernetes Kapsule de Scaleway.

    J'ai déjà buildé mon container plusieurs fois avant ce jour.

    Le container est juste un projet Python Django "out of the box" sans aucun code.
    Lorsque ça fonctionne ça affiche quand même une page web que j'ai déjà vue.

    Mon Dockerfile est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    FROM ubuntu:22.04
    # Utilisez une image de base avec Python préinstallé
    FROM python:3.10
     
    # Définir le répertoire de travail dans le conteneur
    WORKDIR /app
     
    # Copiez les fichiers de votre projet Django dans le conteneur
    COPY . /app
     
    # Installez les dépendances de votre projet Django
    RUN pip install -r requirements.txt
     
    # Exposez le port utilisé par votre application Django
    EXPOSE 8000
     
    # Démarrez le serveur Django lorsque le conteneur est lancé
    CMD python manage.py runserver 0.0.0.0:8000
    Je précise que le fichier requirements.txt exite et se trouve bien dans le même dossier que le Dockerfile.
    J'ai même passé la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo chown 999:999 requirements.txt
    Quand je lance le docker build, j'obtiens l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #8 [stage-1 4/4] RUN pip install -r requirements.txt
    #8 1.025 ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
    #8 1.201 
    #8 1.201 [notice] A new release of pip is available: 23.0.1 -> 23.1.2
    #8 1.201 [notice] To update, run: pip install --upgrade pip
    #8 ERROR: process "/bin/sh -c pip install -r requirements.txt" did not complete successfully: exit code: 1
    ------
     > [stage-1 4/4] RUN pip install -r requirements.txt:
    1.025 ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
    1.201 
    1.201 [notice] A new release of pip is available: 23.0.1 -> 23.1.2
    1.201 [notice] To update, run: pip install --upgrade pip
    ------
    Dockerfile:12
    --------------------
      10 |     
      11 |     # Installez les dépendances de votre projet Django
      12 | >>> RUN pip install -r requirements.txt
      13 |     
      14 |     # Exposez le port utilisé par votre application Django
    --------------------
    ERROR: failed to solve: process "/bin/sh -c pip install -r requirements.txt" did not complete successfully: exit code: 1
    C'est un peu comme si docker ne voyait pas le fichier.

    je ne suis pas experte de linux alors là je n'y comprends plus rien.

    Help

    Merci

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Points : 1 876
    Points
    1 876
    Par défaut
    Dans ces cas-là il est utile de se connecter directement dans le container avec ce genre de commande:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docker exec -it CONTAINER_ID /bin/bash
    et inspecter l'état de l'image. Ça permettra de s'assurer que tous les fichiers sont là.

    Donc je commenterais les instructions qui viennent après COPY pour l'instant.

    De plus, je pense qu'il faudrait provisionner un utilisateur pour cette application, est-ce qu'elle s'exécute en root ? Ce n'est pas une bonne pratique.
    Pour créer un utilisateur dans ce container on peut faire un useradd et puis switcher vers cet utilisateur à l'intérieur du Dockerfile dans la foulée. Et on peut aussi utiliser l'option --chown avec la commande COPY, pour que l'utilisateur soit propriétaire des fichiers copiés.

    Si le container s'est arrêté, alors il faut lui faire exécuter une commande du genre sleep par exemple, pour qu'il reste occupé.

    Bref: docker exec -it ... => c'est très pratique pour troubleshooter.

  3. #3
    Expert éminent
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2016
    Messages
    1 473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 473
    Points : 6 118
    Points
    6 118
    Par défaut
    Bonjour.

    Citation Envoyé par Nadinette Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    FROM ubuntu:22.04
    # Utilisez une image de base avec Python préinstallé
    FROM python:3.10
    La ligne FROM ubuntu:22.04 n'est pas utile ici. Mais bon, ce n'est pas la cause de l'erreur.

    Citation Envoyé par Nadinette Voir le message
    Je précise que le fichier requirements.txt exite et se trouve bien dans le même dossier que le Dockerfile.
    Citation Envoyé par Nadinette Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     > [stage-1 4/4] RUN pip install -r requirements.txt:
    1.025 ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
    C'est étrange. Normalement, il devrait trouver le fichier.

    Exemple simplifié sur mon PC avec un simple code qui utilise pandas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    > ls
    demo.py  Dockerfile  requirements.txt
    > cat Dockerfile
    FROM python:3.10.12-bullseye
    WORKDIR /app
    COPY . /app
    RUN pip install -r requirements.txt
    CMD python demo.py
    > cat requirements.txt
    pandas==2.0.3
    > cat demo.py
    import pandas as pd
     
    data = [['a1', 'b1', 'c1'],
            ['a2', 'b2', 'c2'],
            ['a3', 'b3', 'c3']]
    df = pd.DataFrame(data)
    print(df)
    > docker build -t demoimage .
    [+] Building 24.3s (9/9) FINISHED                                                                                                          
     => [internal] load build definition from Dockerfile                                                                                  0.0s
     => => transferring dockerfile: 146B                                                                                                  0.0s
     => [internal] load .dockerignore                                                                                                     0.0s
     => => transferring context: 2B                                                                                                       0.0s
     => [internal] load metadata for docker.io/library/python:3.10.12-bullseye                                                            2.4s
     => [internal] load build context                                                                                                     0.0s
     => => transferring context: 208B                                                                                                     0.0s
     => [1/4] FROM docker.io/library/python:3.10.12-bullseye@sha256:c9477e5f48f256a74c55d5a28eeb142f2b2a5b93f0933ade974cc1d0665682d2     12.1s
     => => resolve docker.io/library/python:3.10.12-bullseye@sha256:c9477e5f48f256a74c55d5a28eeb142f2b2a5b93f0933ade974cc1d0665682d2      0.0s
     => => sha256:8ef1269fab0ea2c563857f575fe16436f8d60aa9d0ad54121b64f99996536211 2.01kB / 2.01kB                                        0.0s
     => => sha256:6fdd0e5b72ccae203ec30d533c0bcd34200af90265e0531c66356812e529af32 15.76MB / 15.76MB                                      4.1s
     => => sha256:fa786a946ae67fa18e07eaf82fefee1777449f7db1a8fea5abec1aadbe99e2ef 54.59MB / 54.59MB                                      2.5s
     => => sha256:c9477e5f48f256a74c55d5a28eeb142f2b2a5b93f0933ade974cc1d0665682d2 1.65kB / 1.65kB                                        0.0s
     => => sha256:f057cbe9719d522b2f2e110c4fd3e9228a137bb6a39d752b308db73c7eb7534f 7.52kB / 7.52kB                                        0.0s
     => => sha256:34df401c391c7595044379e04e8ad4856a5a3974cdbf5a160f0a204d761e88aa 55.06MB / 55.06MB                                      2.6s
     => => sha256:f3f8721393bc605f2b915d80eb2ad6d5219db374f36bbd1fee99b99174a0a4ca 196.85MB / 196.85MB                                    8.5s
     => => extracting sha256:34df401c391c7595044379e04e8ad4856a5a3974cdbf5a160f0a204d761e88aa                                             1.0s
     => => sha256:e14ce45ee3785d66fea249b188d57222b8d7a4588a1eafe456200d3245179650 6.29MB / 6.29MB                                        3.0s
     => => sha256:b9de297a5ec5e79b7435829bd4ea1ff07406674a77b0f80b13f9da37c48ccefd 17.34MB / 17.34MB                                      4.1s
     => => extracting sha256:6fdd0e5b72ccae203ec30d533c0bcd34200af90265e0531c66356812e529af32                                             0.2s
     => => sha256:2493984d5960fc60db6d6b99b29124285cd203aafd30db6a8a998d808a0898a0 3.08MB / 3.08MB                                        4.5s
     => => sha256:a64a12e32d3db307e661099e22d2d755ef236e6c0ec015b83143344f39f2d484 244B / 244B                                            4.2s
     => => extracting sha256:fa786a946ae67fa18e07eaf82fefee1777449f7db1a8fea5abec1aadbe99e2ef                                             1.0s
     => => extracting sha256:f3f8721393bc605f2b915d80eb2ad6d5219db374f36bbd1fee99b99174a0a4ca                                             2.8s
     => => extracting sha256:e14ce45ee3785d66fea249b188d57222b8d7a4588a1eafe456200d3245179650                                             0.1s
     => => extracting sha256:b9de297a5ec5e79b7435829bd4ea1ff07406674a77b0f80b13f9da37c48ccefd                                             0.3s
     => => extracting sha256:a64a12e32d3db307e661099e22d2d755ef236e6c0ec015b83143344f39f2d484                                             0.0s
     => => extracting sha256:2493984d5960fc60db6d6b99b29124285cd203aafd30db6a8a998d808a0898a0                                             0.1s
     => [2/4] WORKDIR /app                                                                                                                0.3s
     => [3/4] COPY . /app                                                                                                                 0.0s
     => [4/4] RUN pip install -r requirements.txt                                                                                         8.7s
     => exporting to image                                                                                                                0.8s 
     => => exporting layers                                                                                                               0.8s
     => => writing image sha256:a368abac4debdcadbea633ea5f8942bebaed990ef6f7a507cf177c3ee7922557                                          0.0s
     => => naming to docker.io/library/demoimage                                                                                          0.0s
    > docker run demoimage
        0   1   2
    0  a1  b1  c1
    1  a2  b2  c2
    2  a3  b3  c3
    >

  4. #4
    Membre habitué Avatar de Nadinette
    Femme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2012
    Messages
    264
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2012
    Messages : 264
    Points : 144
    Points
    144
    Par défaut
    Avant tout merci pour vos réponses


    Citation Envoyé par Pyramidev Voir le message
    Bonjour.
    J'ai créé le même DockerFile que toi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    FROM python:3.10.12-bullseye
    WORKDIR /app
    COPY . /app
    RUN pip install -r requirements.txt
    CMD python demo.py

    Lorsque je l'execute, même problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     > [4/4] RUN pip install -r requirements.txt:
    0.999 ERROR: Could not open requirements file: [Errno 2] No such file or directory: 'requirements.txt'
    1.089 
    1.089 [notice] A new release of pip is available: 23.0.1 -> 23.1.2
    1.089 [notice] To update, run: pip install --upgrade pip
    ------
    Dockerfile:4
    --------------------
       2 |     WORKDIR /app
       3 |     COPY . /app
       4 | >>> RUN pip install -r requirements.txt
       5 |     CMD python demo.py
    --------------------
    ERROR: failed to solve: process "/bin/sh -c pip install -r requirements.txt" did not complete successfully: exit code: 1
    J'ai l'impression que ça ne devrait pas arriver. Je vais reprendre mon précedent snapshot de ma VM de dev pour voir.

Discussions similaires

  1. [Requête] Impossible de faire fonctionner !
    Par Nesta92 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 17/04/2007, 09h38
  2. Réponses: 5
    Dernier message: 05/12/2006, 23h57
  3. impossible de faire fonctionner le gridlayout
    Par oceane751 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 12/06/2006, 10h42
  4. Réponses: 5
    Dernier message: 22/03/2006, 10h39
  5. impossible de faire fonctionner phppgadmin et pgdmin3
    Par le_ben dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 09/12/2004, 14h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo