将忽略/docker-entrypoint-initdb.d文件夹中的脚本

bis0qfac  于 2022-12-11  发布在  Docker
关注(0)|答案(1)|浏览(162)

我需要用一些SQL命令配置Postogres,但是我放在/docker-entrypoint-initdb.d文件夹中的所有内容都没有执行。
我的Dockerfile如下:

FROM postgres:9.6

COPY init.sql /docker-entrypoint-initdb.d/
USER root
RUN chown postgres:postgres /docker-entrypoint-initdb.d/init.sql
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["postgres"]

我在init.sql中尝试了多个命令,例如:

CREATE DATABASE db_name;

最后,这是yaml文件中与数据库有关的部分。

db:
    image: postgres-am
    ports:
      - target: 5432
        published: 5432
        protocol: tcp
        mode: host

    environment:
      POSTGRES_PASSWORD: "postgres"
      PGDATA: "/var/lib/postgresql/data/pgdata"

    volumes:
      - db_data:/var/lib/postgresql/data
h79rfbju

h79rfbju1#

Postgres只在没有找到数据库的情况下初始化数据库,当容器启动时。因为您在数据库目录上有卷Map,所以很可能数据库已经存在。
如果您删除db_data卷并启动容器,postgres将看到没有数据库,然后它将使用docker-entrypoint-initdb.d中的脚本为您初始化一个数据库。

相关问题