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

时间:2018-11-06 17:25:22

标签: docker docker-compose psql

我想知道是否可以在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

这两个步骤可以正常工作。但是我很想知道是否可以一步一步。

每次我想运行此命令。数据库始终是新的,这一点很重要。这就是为什么我不将其保留在volume中并想运行此命令的原因。

是否可以运行docker-compose up并同时运行psql命令?

谢谢!

1 个答案:

答案 0 :(得分:5)

纯docker-compose解决方案,具有音量

  volumes:
    - ./data.sql:/docker-entrypoint-initdb.d/init.sql

根据dockerfile,在启动时,它将转储docker-entrypoint-initdb.d中的每个sql数据