Python 如何使用MariaDB运行停靠的Django REST框架后端?

Python 如何使用MariaDB运行停靠的Django REST框架后端?,python,docker,mariadb,Python,Docker,Mariadb,如标题所示:当我使用Docker时,我很难切换到MariaDB 只要我从磁盘本地启动了许多不同的数据库(默认的SQLite、PostgreSQL和MariaDB),每个配置都可以正常工作。SQLite和PostgreSQL也与Docker配合使用(Postgres驱动程序的安装进展顺利),但MariaDB报告了获取MariaDB连接器/C的问题 Dockerfile: FROM python:3.8.5-alpine3.12 ENV PYTHONUNBUFFERED 1 COPY ./req

如标题所示:当我使用Docker时,我很难切换到MariaDB

只要我从磁盘本地启动了许多不同的数据库(默认的SQLite、PostgreSQL和MariaDB),每个配置都可以正常工作。SQLite和PostgreSQL也与Docker配合使用(Postgres驱动程序的安装进展顺利),但MariaDB报告了获取
MariaDB连接器/C
的问题

Dockerfile

FROM python:3.8.5-alpine3.12

ENV PYTHONUNBUFFERED 1

COPY ./requirements.txt /requirements.txt
RUN apk add libmariadb3
RUN pip install -r /requirements.txt

RUN mkdir /app
WORKDIR /app
COPY ./app /app

RUN adduser --disabled-password user
USER user
docker compose.yml

version: "3"

services:
  app:
    build:
      context: .
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
    command:
      sh -c "python manage.py runserver 0.0.0.0:8000"
    environment:
      [...]
    depends_on:
      - db

  db:
    image: mariadb:10.5.4
    environment:
      [...]
我得到的错误是:

[...]
Step 4/11 : RUN apk add libmariadb3
 ---> Running in 5a3e568b8ac3
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz
ERROR: unsatisfiable constraints:
  libmariadb3 (missing):
    required by: world[libmariadb3]
ERROR: Service 'app' failed to build: The command '/bin/sh -c apk add libmariadb3' returned a non-zero code: 1
根据,
MariaDB Connector/C
可以与
apt-get
yum
dnf
zypper
一起安装,也可以从源代码处安装,但显然不能与
apk
一起安装

深思熟虑的解决办法:

  • 下载
    MariaDB Connector/C
    tar.gz到项目目录,并在构建映像时复制它。缺点:必须注意手动更新驱动程序
  • 使用在Ubuntu上运行的Python映像。缺点:够小吗?是否仍受支持(在Docker的中心列表中不可见)

  • 正如我在上面所写的,这些解决方案似乎并不令人满意。您知道配置MariaDB使用Python的其他方法吗?

    似乎
    Python:3.9.0b5-buster
    已经为
    956MB
    准备好了一切:

    $cat Dockerfile

    FROM python:3.9.0b5-buster 
    RUN apt-get update
    RUN apt-get install libmariadb3
    

    $docker build-带maria的t py增压器。

    Step 3/3 : RUN apt-get install libmariadb3
     ---> Running in 40be8f94b3de
    Reading package lists...
    Building dependency tree...
    Reading state information...
    libmariadb3 is already the newest version (1:10.3.22-0+deb10u1).
    libmariadb3 set to manually installed.
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
    

    docker image ls| grep py booster和maria

    py-booster-with-maria              latest                       e7c61439835f        7 minutes ago       956MB
    

    您试过mariadb-connector-c软件包吗?它提供了


    是的,我试过了,但结果是
    OSError:mariadb config找不到。
    RUN apk add mariadb-connector-c