postgresql - 如何在 docker-compose 处理的 postgres docker 容器中运行 psql 命令?

标签 postgresql docker docker-compose dockerfile

这个问题与这个问题相关:Docker - How can run the psql command in the postgres container?

但上面提供的解决方案仅在您手动执行操作时有效,而这里有人希望使用 docker-compose 自动执行操作。

所以这个 docker 容器可以工作:

FROM postgres
COPY init.sql /docker-entrypoint-initdb.d/

但是这个 docker 容器失败了:

FROM postgres
RUN psql -U postgres -c "CREATE USER user WITH PASSWORD 'pass';"

因为在执行 RUN 时 postgresql 服务器尚未启动!

有没有办法克服这个限制?

最佳答案

当您将包含脚本的文件夹挂载到位于 /docker-entrypoint-initdb.d/ 的 docker 容器时,您可以在 posgres 中运行一些脚本 se 挂载文件夹 sql 的 docker-compose.yml . postgres 图像很棒,每次 postgres 启动时都会运行脚本...

version: '3.6'

services:  
  my_db:
    image: postgres:alpine
    volumes: ["/somepath/sql/:/docker-entrypoint-initdb.d/"]

/somepath/的文件结构

- docker-compose.yml
- sql
  - new_extension.sql

cat sql/new_extension.sql

/* create extension for cureent DB */
CREATE EXTENSION IF NOT EXISTS citext;
/* create extension over the template1 so all created databases after that also have the extension */
\c template1
CREATE EXTENSION IF NOT EXISTS citext;

关于postgresql - 如何在 docker-compose 处理的 postgres docker 容器中运行 psql 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50064046/

相关文章:

sql - Rails : complex search on 3 models, 只返回最新的 - 如何做到这一点?

postgresql - pg_dump 阻塞了哪些操作?

python - 从 PostgreSQL 转储中查询数据

django - 在 AWS 上托管 Dockerized Django 项目

angular - docker :什么是运行 Angular 最好的选择?

javascript - 使用 Node js 连接到 postgres

Docker突然无法识别-p命令

spring - Docker Compose + Spring Boot + Postgres 连接

node.js - Dockerfile env 依赖的起点

asp.net - 如何将种子数据放入SQL Server docker镜像中?