Docker : Alpine : Django - Ошибка при установке библиотеки python mysqlclient

Я создаю на основе Alpine образ Django приложения для соединения с MySQL базой данных. Для соединения с базой данных я использую mysqlclient. Для сборки образа я использую docker-compose. Когда я делаю docker-compose build, я получаю соответствующую ошибку:

#15 7.366   Downloading mysqlclient-1.3.0.tar.gz (76 kB)
#15 7.403   Preparing metadata (setup.py): started
#15 7.545   Preparing metadata (setup.py): finished with status 'error'
#15 7.545   ERROR: Command errored out with exit status 1:
#15 7.545    command: /usr/local/bin/python -c 'import io, os, sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-3fyj3dl9/mysqlclient_4a600f29b1334b47a39251a3f24d8315/setup.py'"'"'; __file__='"'"'/tmp/pip-install-3fyj3dl9/mysqlclient_4a600f29b1334b47a39251a3f24d8315/setup.py'"'"';f = getattr(tokenize, '"'"'open'"'"', open)(__file__) if os.path.exists(__file__) else io.StringIO('"'"'from setuptools import setup; setup()'"'"');code = f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' egg_info --egg-base /tmp/pip-pip-egg-info-wh30qihi
#15 7.545        cwd: /tmp/pip-install-3fyj3dl9/mysqlclient_4a600f29b1334b47a39251a3f24d8315/
#15 7.545   Complete output (10 lines):
#15 7.545   /bin/sh: mysql_config: not found
#15 7.545   Traceback (most recent call last):
#15 7.545     File "<string>", line 1, in <module>
#15 7.545     File "/tmp/pip-install-3fyj3dl9/mysqlclient_4a600f29b1334b47a39251a3f24d8315/setup.py", line 17, in <module>
#15 7.545       metadata, options = get_config()
#15 7.545     File "/tmp/pip-install-3fyj3dl9/mysqlclient_4a600f29b1334b47a39251a3f24d8315/setup_posix.py", line 47, in get_config
#15 7.545       libs = mysql_config("libs_r")
#15 7.545     File "/tmp/pip-install-3fyj3dl9/mysqlclient_4a600f29b1334b47a39251a3f24d8315/setup_posix.py", line 29, in mysql_config
#15 7.545       raise EnvironmentError("%s not found" % (mysql_config.path,))
#15 7.545   OSError: mysql_config not found
#15 7.545   ----------------------------------------
#15 7.545 WARNING: Discarding https://files.pythonhosted.org/packages/6a/91/bdfe808fb5dc99a5f65833b370818161b77ef6d1e19b488e4c146ab615aa/mysqlclient-1.3.0.tar.gz#sha256=06eb5664e3738b283ea2262ee60ed83192e898f019cc7ff251f4d05a564ab3b7 (from https://pypi.org/simple/mysqlclient/). Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
#15 7.545 ERROR: Could not find a version that satisfies the requirement mysqlclient (from versions: 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.3.5, 1.3.6, 1.3.7, 1.3.8, 1.3.9, 1.3.10, 1.3.11rc1, 1.3.11, 1.3.12, 1.3.13, 1.3.14, 1.4.0rc1, 1.4.0rc2, 1.4.0rc3, 1.4.0, 1.4.1, 1.4.2, 1.4.2.post1, 1.4.3, 1.4.4, 1.4.5, 1.4.6, 2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.1.0rc1)
#15 7.546 ERROR: No matching distribution found for mysqlclient
------
failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c python -m pip install mysqlclient]: exit code: 1

Это мой Django Dockerfile

# Base image for newly image. Alpine version is lightweigther.
FROM python:3.9-alpine
ENV PYTHONUNBUFFERED 1

# Set app directory
WORKDIR /app
COPY . /app/

# install python dependencies
RUN python -m pip install --upgrade pip
# dependencies
RUN python -m pip install Django djangorestframework django-extensions
RUN python -m pip install mysqlclient
RUN python -m pip install python-dotenv

А это мой docker-compose.yaml

# Docker Compose file Reference (https://docs.docker.com/compose/compose-file/)
version: '3.8'

# Different Components of the Application
services:

  # Database Service (Mysql)
  app-db:
    container_name: theater-platform-db
    image: mysql:5.7
    ports:
      - '2003:3306'
    restart: always
    environment:
      MYSQL_DATABASE: theater_platform
      MYSQL_USER: ${DB_USER}
      MYSQL_PASSWORD: ${DB_USER_PW}
      MYSQL_ROOT_PASSWORD: ${DB_ROOT_PW}
    volumes:
      - ./volumes/db-data:/var/lib/mysql
    networks:
      - backend
    healthcheck:
      test: 'mysqladmin ping -h theater-platform-db -P 3306 -u ${DB_USER} --password="${DB_USER_PW}"'
      timeout: 10s
      retries: 3

  app-backend:
    container_name: theater-platform-django-api-server
    build:
      context: backend
      dockerfile: Dockerfile
    ports:
      - '2004:8000'
    command: >
      sh -c 'python manage.py makemigrations &&
             python manage.py migrate &&
             python manage.py runserver 8000'
    restart: on-failure
    environment:
      DEBUG: '1'
      DB_HOST: theater-platform-db
      DB_PORT: 3306
      DB_NAME: theater_platform
      DB_USER: ${DB_USER}
      DB_PASSWORD: ${DB_USER_PW}
    volumes:
      - ./volumes/app-data:/app/appdata
    networks:
      - backend
      - frontend
    depends_on:
      app-db:
        condition: service_healthy

  app-frontend:
    container_name: theater-platform-web-ui
    build:
      context: frontend
      dockerfile: Dockerfile
    ports:
      - '2005:8080'
    networks:
      - frontend

volumes:
  db-data:
  app-data:

networks:
  backend:
  frontend:

Кто-нибудь знает, как это исправить? Я пытался посмотреть соответствующую документацию, но безуспешно.

это ссылка awsner
. вы забыли установить одну библиотеку для компиляции mysqlclient

Вернуться на верх