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

alb*_*ivo 7 psql docker docker-compose

我想知道是否可以在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
Run Code Online (Sandbox Code Playgroud)

并且在运行正常之后,我运行以下命令: docker exec -i postgres-container psql -U username -d databasename < data.sql

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

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

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

提前致谢!

Siy*_*iyu 6

纯粹的docker-compose解决方案

  volumes:
    - ./data.sql:/docker-entrypoint-initdb.d/init.sql
Run Code Online (Sandbox Code Playgroud)

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