【问题标题】:How to create table postgresql when start by docker composedocker compose启动时如何创建表postgresql
【发布时间】:2020-06-05 03:29:23
【问题描述】:

我知道这个问题已经被问过了,也给出了答案。但这对我不起作用。我也是这样。我的 postgres 容器运行良好。我检查了容器内部是否存在 /docker-entrypoint-initdb.d/init.sql。我使用了以下 docker-compose.yml。

version: "3"
services:
  postgres:
    image: postgres:latest
    network_mode: bridge
    container_name: postgres
    expose:
    - 5432
    ports:
      - 5432:5432
    volumes:
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    environment:
         - POSTGRES_PASSWORD=admin
         - POSTGRES_USER=postgres
         - POSTGRES_DB=dev
    restart: unless-stopped

# APP
  profile_editor2:
    build:
      context: .
      dockerfile: ./Dockerfile
    network_mode: bridge
    container_name: profile_editor2
    volumes:
      - ./image:/app/image
    expose:
      - 8080
    ports:
      - 8080:8080
    restart: unless-stopped
    depends_on:
      - postgres
    links:
      - postgres
volumes:
  postgres-data:

init.sql:-

  create table sometable(id int);   

没有创建表。我只能看到创建了数据库。我如何创建一个表,如果可能的话,如何在表中插入一些数据?

【问题讨论】:

    标签: postgresql docker docker-compose


    【解决方案1】:

    您可以在 init.sql 中编写查询,顺序如下:-

    DROP DATABASE IF EXISTS test_db;    
    
    CREATE DATABASE test_db;    
    
    \c test_db;        
    
    CREATE TABLE Role(
    RoleID SERIAL PRIMARY KEY,
    RoleName varchar(50),
    );    
    insert into Role(RoleName)
    values ('Admin'),('User');
    

    【讨论】:

    • 我将创建一个数据库和角色。不是桌子。我可以创建一个数据库,默认用户 postgres 对我来说很好。我无法创建表格。
    • 它将在数据库 test_db 中创建一个表 Role。
    • 环境创建的那些: - POSTGRES_PASSWORD=admin - POSTGRES_USER=postgres - POSTGRES_DB=dev 我需要创建一个表。
    • 您是否正在检查“\c dev”数据库中的“sometable”?你的 init.sql 很好。
    • 是的。 "\c dev" 并且没有创建表。看起来 postgres 没有选择那个 init.sql。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-02
    • 2017-01-12
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    相关资源
    最近更新 更多