RUN pip install --upgrade pip and RUN pip install -r requirements.txt not working

so here’s the story, this is my first time using docker because i was told it is really easy to deploy script, model and many more. Today i try to build my first docker image for my python script using flask. i try to build it and it work on the first couple of iteration and fail like 10 times on the RUN section this is the log

[+] Building 9.7s (9/10)                                                                                 docker:default
 => [internal] load build definition from Dockerfile                                                               0.9s
 => => transferring dockerfile: 682B                                                                               0.0s
 => [internal] load .dockerignore                                                                                  1.3s
 => => transferring context: 58B                                                                                   0.0s
 => [internal] load metadata for                                                      4.5s
 => [auth] library/python:pull token for                                                      0.0s
 => [1/5] FROM 
 => [internal] load build context                                                                                  0.3s
 => => transferring context: 74B                                                                                   0.0s
 => CACHED [2/5] WORKDIR /flask-finding-driver                                                                     0.0s
 => CACHED [3/5] COPY requirements.txt /flask-finding-driver/                                    0.0s
 => ERROR [4/5] RUN python -m pip install --upgrade pip                                                            2.1s
 > [4/5] RUN python -m pip install --upgrade pip:
1.565 exec /bin/sh: exec format error
   9 |
  10 |     # Install any needed packages specified in requirements.txt
  11 | >>> RUN python -m pip install --upgrade pip
  12 |     RUN pip install -r requirements.txt
  13 |
ERROR: failed to solve: process "/bin/sh -c python -m pip install --upgrade pip" did not complete successfully: exit code: 1

. well of course because of this i search on many places for advice and implement it like dont upgrade pip, use python3, dont use pip to upgrade pip, dont run pip at all, etc i try everything and still fail. also when i delete this line

RUN python -m pip install --upgrade pip

it created another error same like this but for requirements.txt

this is my dockerfile

FROM python:3.9

WORKDIR /flask-finding-driver

COPY requirements.txt /flask-finding-driver/

RUN python -m pip install --upgrade pip
RUN pip install -r requirements.txt



CMD ["flask", "run", "--host="]

thank you if youre answering this question really need it fast :sleepy: :sob:

Please, format your post according to the following guide: How to format your forum posts
In short: please, use </> button to share codes, terminal outputs, error messages or anything that can contain special characters which would be interpreted by the MarkDown filter. Use the preview feature to make sure your text is formatted as you would expect it and check your post after you have sent it so you can still fix it.

Example code block:

echo "I am a code."
echo "An athletic one, and I wanna run."

already done thanks, its my first time using this forum

exec format error happens when the binary is not compatible with the operating system’s architecture. What is your operating system?

The output of

docker info


docker version

could be useful to tell you more.

You can also try this dockerfile

FROM python:3.9
RUN python -m pip install --upgrade pip

And try the command interactively:

docker run --rm -it python:3.9 pip install --upgrade pip

this is my docker info

 Version:    24.0.7
 Context:    default
 Debug Mode: false
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.12.0-desktop.2
    Path:     C:\Program Files\Docker\cli-plugins\docker-buildx.exe
  compose: Docker Compose (Docker Inc.)
    Version:  v2.23.3-desktop.2
    Path:     C:\Program Files\Docker\cli-plugins\docker-compose.exe
  dev: Docker Dev Environments (Docker Inc.)
    Version:  v0.1.0
    Path:     C:\Program Files\Docker\cli-plugins\docker-dev.exe
  extension: Manages Docker extensions (Docker Inc.)
    Version:  v0.2.21
    Path:     C:\Program Files\Docker\cli-plugins\docker-extension.exe
  feedback: Provide feedback, right in your terminal! (Docker Inc.)
    Version:  0.1
    Path:     C:\Program Files\Docker\cli-plugins\docker-feedback.exe
  init: Creates Docker-related starter files for your project (Docker Inc.)
    Version:  v0.1.0-beta.10
    Path:     C:\Program Files\Docker\cli-plugins\docker-init.exe
  sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
    Version:  0.6.0
    Path:     C:\Program Files\Docker\cli-plugins\docker-sbom.exe
  scan: Docker Scan (Docker Inc.)
    Version:  v0.26.0
    Path:     C:\Program Files\Docker\cli-plugins\docker-scan.exe
  scout: Docker Scout (Docker Inc.)
    Version:  v1.2.0
    Path:     C:\Program Files\Docker\cli-plugins\docker-scout.exe

 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 24.0.7
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: d8f198a4ed8892c764191ef7b3b06d8a2eeb5c7f
 runc version: v1.1.10-0-g18a0cb0
 init version: de40ad0
 Security Options:
   Profile: unconfined
 Kernel Version:
 Operating System: Docker Desktop
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 3.764GiB
 Name: docker-desktop
 ID: 1bc8f152-5a82-4918-b3fb-d0e039c6813b
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 HTTP Proxy: http.docker.internal:3128
 HTTPS Proxy: http.docker.internal:3128
 No Proxy: hubproxy.docker.internal
 Experimental: false
 Insecure Registries:
 Live Restore Enabled: false

WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support
WARNING: daemon is not using the default seccomp profile

and this is my docker version

 Cloud integration: v1.0.35+desktop.5
 Version:           24.0.7
 API version:       1.43
 Go version:        go1.20.10
 Git commit:        afdd53b
 Built:             Thu Oct 26 09:08:44 2023
 OS/Arch:           windows/amd64
 Context:           default

Server: Docker Desktop 4.26.0 (130397)
  Version:          24.0.7
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.10
  Git commit:       311b9ff
  Built:            Thu Oct 26 09:08:02 2023
  OS/Arch:          linux/amd64
  Experimental:     false
  Version:          1.6.25
  GitCommit:        d8f198a4ed8892c764191ef7b3b06d8a2eeb5c7f
  Version:          1.1.10
  GitCommit:        v1.1.10-0-g18a0cb0
  Version:          0.19.0
  GitCommit:        de40ad0

and this is what happen when i try this on my terminal

docker run --rm -it python:3.9 pip install --upgrade pip

Unable to find image 'python:3.9' locally
3.9: Pulling from library/python
90e5e7d8b87a: Already exists
27e1a8ca91d3: Already exists
d3a767d1d12e: Already exists
711be5dc5044: Already exists
48b2d58a56e9: Already exists
9205253a8842: Already exists
a5992e8ed15e: Already exists
681e36302a03: Already exists
Digest: sha256:b2e47a7eca3178e4ce6c095d3a2d1cd05bfa616efe7f2047c95fffe159e00166
Status: Downloaded newer image for python:3.9
exec /usr/local/bin/pip: input/output error

That is indeed a simple command that doesn’t work and should. Please, run the following command as well and share the output:

docker image inspect python:3.9 --format '{{ .Architecture }}'

This will show if the image has thr wrong architetcure somehow. If it is not amd64, you could try to delete the image and try again running the previous twst commands.