如何在docker-compose文件中初始化PSQL数据库?

19

我想知道在docker-compose文件中是否可以执行PSQL命令。

我有以下的docker-compose.yml文件:

version: '3' 
services:
  postgres:
    image: postgres:9.6
    container_name: postgres-container
    ports:
      - "5432:5432"
    network_mode: host
    environment:
      - LC_ALL=C.UTF-8
      - POSTGRES_DB=databasename
      - POSTGRES_USER=username
      - POSTGRES_PASSWORD=
      - POSTGRES_PORT=5432

在这个命令运行正常后,我运行以下命令:

docker exec -i postgres-container psql -U username -d databasename < data.sql

这2个步骤都可以正常工作。但我想知道是否可能将它们合并成一个单独的步骤。

每次我想要运行这个命令时,数据库必须是全新的。这就是为什么我不会将其保留在volume中并想要运行此命令的原因。

是否可能运行docker-compose up并运行psql命令?

提前致谢!

1个回答

17
使用卷的纯docker-compose解决方案,
  volumes:
    - ./data.sql:/docker-entrypoint-initdb.d/init.sql
根据dockerfile,在启动时,它将转储docker-entrypoint-initdb.d中的所有SQL数据。

@saadi,你应该考虑创建另一个Stack Overflow的帖子,看看能否解决你的问题。 - Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接