如何使用 MariaDB 运行 dockerized Django REST Framework

正如标题:我在使用 Docker 时遇到了切换到 MariaDB 的麻烦。


只要我从磁盘本地启动许多不同的数据库(默认 SQLite、PostgreSQL 和 MariaDB),每个配置都可以正常工作。SQLite 和 PostgreSQL 也可以与 Docker 一起工作(Postgres 的驱动程序安装顺利),但是 MariaDB 报告获取MariaDB Connector/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.


考虑的解决方案:

  1. 下载MariaDB Connector/Ctar.gz 到项目目录,并在构建镜像时复制它。缺点:必须手动更新驱动程序。

  2. 使用在 Ubuntu 上运行的 Python 图像。缺点:它够小吗?它是否仍然受支持(在 Docker 中心的列表中不可见)?

正如我上面所写,这些解决方案似乎并不令人满意。你知道其他配置 MariaDB 以与 Python 一起工作的方法吗?


GCT1015
浏览 82回答 2
2回答

侃侃无极

似乎python:3.9.0b5-buster已经准备好了一切956MB:$ cat Dockerfile FROM python:3.9.0b5-buster RUN apt-get updateRUN apt-get install libmariadb3$ docker build -t py-booster-with-maria .Step 3/3 : RUN apt-get install libmariadb3 ---> Running in 40be8f94b3deReading 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-with-mariapy-booster-with-maria              latest                       e7c61439835f        7 minutes ago       956MB

MM们

您是否尝试过 mariadb-connector-c 软件包?它提供/usr/lib/libmariadb.so.3。RUN apk add mariadb-connector-c
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python