正如标题:我在使用 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.
考虑的解决方案:
下载MariaDB Connector/C
tar.gz 到项目目录,并在构建镜像时复制它。缺点:必须手动更新驱动程序。
使用在 Ubuntu 上运行的 Python 图像。缺点:它够小吗?它是否仍然受支持(在 Docker 中心的列表中不可见)?
正如我上面所写,这些解决方案似乎并不令人满意。你知道其他配置 MariaDB 以与 Python 一起工作的方法吗?
侃侃无极
MM们
相关分类