【问题标题】:docker-compose.yml, postgress, how to setup db, tables and prepop in an init.sql file?docker-compose.yml,postgress,如何在 init.sql 文件中设置 db、tables 和 prepop?
【发布时间】:2018-12-11 17:58:21
【问题描述】:

我想添加一个数据库、表并预填充某种 init.sql 文件。不确定 init.sql 文件是什么样的。也不确定我会将 ADD 命令放在哪里。

这个 docker-compose.yml 文件有效

version: '3.6'
services:
  postgre:
    image: postgres:11.1-alpine
    ports:
      - "5432"
    environment:
      POSTGRES_USER: 'user'
      POSTGRES_PASSWORD: 'password'
      POSTGRESS_DB: 'db_amex01'
    volumes:
      - ./init:/docker-entrypoint-initdb.d/

【问题讨论】:

    标签: postgresql docker-compose


    【解决方案1】:

    您可以将*.sh 脚本和/或*.sql 指令添加到/docker-entrypoint-initdb.d/ 目录(基本上您在docker-compose.yml 文件中已有的内容)。

    创建用户的shell脚本示例:

    #!/bin/bash
    set -e
    
    psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
        CREATE USER docker;
        CREATE DATABASE docker;
        GRANT ALL PRIVILEGES ON DATABASE docker TO docker;
    EOSQL
    

    您可以通过使用psql -U &lt;username&gt; -d &lt;dbname&gt; -1 -f &lt;filename&gt;.sql“转储”数据,从现有数据库生成.sql 文件。然后您可以将.sql 文件添加到您的./init/ 目录中。

    这记录在https://github.com/docker-library/docs/tree/master/postgres#how-to-extend-this-image

    【讨论】:

    • 主机是什么?我仍然遇到连接问题。甚至到loal主机。
    • localhost(或者docker网桥接口的ip地址)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2018-07-06
    • 2018-12-23
    相关资源
    最近更新 更多