首页 > 解决方案 > 使用 Docker 时如何向数据库创建虚拟数据?

问题描述

我有一个在 Docker 容器中运行的 Django 应用程序。我想在运行时用一些数据填充我的 Postgres 数据库docker-compose up。我尝试编写一个 sql 文件:

# sql/fill_tables.sql

INSERT INTO person(name, gender)
    VALUES ('testUser', 'male');

这是我docker-compose.yml将 sql 添加到卷的地方:

db:
    image: postgres
    volumes:
      - ./data/db:/var/lib/postgresql/data
      - ./sql/fill_tables.sql:/docker-entrypoint-initdb.d/fill_tables.sql
    env_file: .env 
    environment:
      - POSTGRES_DB=$DATABASE_NAME
      - POSTGRES_USER=$DATABASE_USER
      - POSTGRES_PASSWORD=$DATABASE_PASSWORD
    container_name: postgres_db  

然而,这并没有做任何事情,我的数据库中的表保持为空。这应该如何用 Docker 完成?

标签: sqlpostgresqldocker

解决方案


你可以用 docker-compose.yml 来做,它现在不工作的原因可能是因为你已经有一些数据在/data.

如果/data卷存在并且有一些数据,它不会被覆盖docker-entrypoint-initdb.d/fill_tables.sql

我想您可以./data/db:/var/lib/postgresql/data从 docker-compose.yml 中删除该行,以查看您的数据库由fill_tables.sql


推荐阅读