postgresql – Docker postgres不在docker-entrypoint-initdb.d中运行init文件

前端之家收集整理的这篇文章主要介绍了postgresql – Docker postgres不在docker-entrypoint-initdb.d中运行init文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
基于Docker的Postgres documentation,我可以在/docker-entrypoint-initdb.d中创建任何* .sql文件并让它自动运行.

我有init.sql包含CREATE DATABASE ronda;

在我的docker-compose.yaml中,我有

web:
  restart: always
  build: ./web
  expose:
    - "8000"
  links:
    - postgres:postgres
  volumes:
    - /usr/src/app/static
  env_file: .env
  command: /usr/local/bin/gunicorn ronda.wsgi:application -w 2 -b :8000

Nginx:
  restart: always
  build: ./Nginx/
  ports:
    - "80:80"
  volumes:
    - /www/static
  volumes_from:
    - web
  links:
    - web:web

postgres:
  restart: always
  build: ./postgres/
  volumes_from:
    - data
  ports:
    - "5432:5432"

data:
  restart: always
  build: ./postgres/
  volumes:
    - /var/lib/postgresql
  command: "true"

和我的postgres Dockerfile,

FROM library/postgres

RUN mkdir -p /docker-entrypoint-initdb.d
COPY init.sql /docker-entrypoint-initdb.d/

运行docker-compose build和docker-compose工作正常,但是没有创建数据库ronda.

解决方法

如果初始化要求只是创建ronda模式,那么您可以使用07GR中描述的POSTGRES_DB环境变量.

postgres服务的docker-compose.yml文件的位将是:

postgres:
  restart: always
  build: ./postgres/
  volumes_from:
    - data
  ports:
    - "5432:5432"
  environment:
    POSTGRES_DB: ronda

另外,不要使用restart:always for your data container,因为此容器不运行任何服务(只是true命令).这样做基本上告诉Docker在无限循环中运行true命令.

猜你在找的Postgre SQL相关文章