【问题标题】:how to install postgres extension with docker on django project如何在 django 项目上使用 docker 安装 postgres 扩展
【发布时间】:2021-12-11 15:18:47
【问题描述】:

我想在我的 Django 项目中添加全文搜索,并且我使用了 PostgreSQL 和 docker,所以想在 PostgreSQL 中添加扩展 pg_trgm 以进行三元相似度搜索。我应该如何使用 dockerfile 安装这个扩展?

In shared my repository link.

FROM python:3.8.10-alpine
WORKDIR /Blog/


ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1


RUN apk update && apk add postgresql-dev gcc python3-dev musl-dev


RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt


COPY ./entrypoint.sh .
RUN sed -i 's/\r$//g' ./entrypoint.sh
RUN chmod +x ./entrypoint.sh

COPY . .

ENTRYPOINT ["./entrypoint.sh"]

码头工人撰写

services:
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/Blog
    ports:
      - 8000:8000
    env_file:
      - ./.env.dev
    depends_on:
      - db

  db:
    image: postgres:12.0-alpine
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    environment:
      - POSTGRES_USER=helo
      - POSTGRES_PASSWORD=helo
      - POSTGRES_DB=helo
    
volumes:`enter code here`
  postgres_data:

【问题讨论】:

标签: python django postgresql docker docker-compose


【解决方案1】:

你可以做到这一点!

$ sudo docker-compose exec db bash
$ psql -U username -d database
$ create extension pg_trgm;

这不是一个好方法,因为每次创建映像时都必须小心并重新安装它。

使用默认的django解决方案:

https://docs.djangoproject.com/en/4.0/ref/contrib/postgres/operations/#trigramextension

from django.contrib.postgres.operations import TrigramExtension

class Migration(migrations.Migration):
    ...

    operations = [
        TrigramExtension(),
        ...
    ]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2021-01-16
    • 1970-01-01
    相关资源
    最近更新 更多