Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql Docker Compose和Postgres扩展_Postgresql_Docker_Docker Compose - Fatal编程技术网

Postgresql Docker Compose和Postgres扩展

Postgresql Docker Compose和Postgres扩展,postgresql,docker,docker-compose,Postgresql,Docker,Docker Compose,这是我的docker撰写文件。有什么简单的方法可以安装postgres扩展吗?我正在尝试安装pg\u trgm 编辑:我现在有两个DockerFile和一个安装脚本。当我运行docker compose up build 内部服务器错误:pq:操作员不存在:字符变化%未知 services: db: build: context: . dockerfile: db/Dockerfile image: postgres ports:

这是我的docker撰写文件。有什么简单的方法可以安装postgres扩展吗?我正在尝试安装
pg\u trgm

编辑:我现在有两个DockerFile和一个安装脚本。当我运行
docker compose up build

内部服务器错误:pq:操作员不存在:字符变化%未知

services:
  db:
    build:
      context: .
      dockerfile: db/Dockerfile
    image: postgres
    ports:
      - "5432:5432"
    environment:
      - POSTGRES_USER=x
      - POSTGRES_PASSWORD=x
      - POSTGRES_DB=x

  api:
    build:
      context: .
      args:
        app_env: ${APP_ENV}
    volumes:
      - .:/go/src/x/y/z
    ports:
      - "8080:8080"
db/Dockerfile:

FROM postgres
COPY db/install-extensions.sql /docker-entrypoint-initdb.d
db/install-extensions.sql

CREATE EXTENSION IF NOT EXISTS pg_trgm;
试试这个

FROM postgres
COPY ./install-extensions.sql /docker-entrypoint-initdb.d
并从文件中删除数据库

或者你可以写

version: "3.1"

services:
  db:
    image: postgres:9.6
    restart: always
    environment:
      POSTGRES_PASSWORD: unit
      POSTGRES_USER: unit
      POSTGRES_DB: unit
    ports:
      - 5432:5432
    volumes:
      - ./scripts:/docker-entrypoint-initdb.d
然后

  • 创建目录脚本
  • 将.sql或.sh文件
  • 删除已创建的容器docker compose rm-v
  • 启动docker docker组装--构建
  • 在日志中,您必须看到如下内容:

  • 有一个在提到的Dockerfile中添加扩展的示例:。您需要编写自己的Dockerfile,它只是从“postgres”扩展并安装扩展。然后在docker中构建dockerfile-compose@Mihai如果可以查看,请进行编辑。将sql文件与Dockerfile放在同一级别。然后在docker文件中删除“db/”。此外,您还可以删除docker-compose中的“上下文”声明。实际上,如果要初始化数据库,您必须始终删除数据卷