首页 > 解决方案 > docker compose 初始数据库设置问题一次

问题描述

我创建了看起来像这样的 Docker 文件

db:
image: postgres:10.3
ports:
  - "5432:5432"
environment:
  POSTGRES_DB: test
  POSTGRES_USER: test
  POSTGRES_PASSWORD: changeme
restart: always
volumes:
  - ./srv/postgres:/var/lib/postgresql/data
  - ./init/:/docker-entrypoint-initdb.d/

我在 ./init 路径中有一个 sql 脚本,其中包含用于创建数据库和用户的 sql 命令。我看到在 postgres 容器中创建的 sql 文件,但不知何故它没有执行。我遵循了 docker hub 上的文档。我不确定这里有什么问题?

标签: dockerdocker-compose

解决方案


我也经历过这种情况。问题是/docker-entrypoint-initdb.d/只有在数据库尚未初始化时才会运行其中的脚本。

如果您停止容器,请删除其中的内容,./srv/postgres/然后重新创建您的*.sql脚本./init将在其中运行的容器。

但是,这样做会导致您的数据丢失。

有关更多信息,请参见此处。


推荐阅读