
PostgreSQL
在使用 Docker 部署 PostgreSQL 数据库时,我们通常会将初始化脚本放置在容器的 /docker-entrypoint-initdb.d 目录中,以便在容器启动时自动运行这些脚本来初始化数据库。然而,有时我们希望禁止 Docker 运行该目录中的特定脚本文件。本文将探讨如何通过修改 Dockerfile 来实现这一目标,并提供相应的案例代码。
docker-entrypoint-initdb.d 目录中的 init 文件,我们可以通过修改 Dockerfile 中的 CMD 指令来实现。具体方法是在 CMD 指令中添加一个参数来覆盖默认的启动命令。以下是一个示例的 Dockerfile:dockerfileFROM postgres:latestCOPY init.sql /docker-entrypoint-initdb.d/CMD ["postgres", "-c", "shared_preload_libraries=''"]在这个示例中,我们从
postgres:latest 基础镜像开始构建我们的镜像。然后,我们将一个名为 init.sql 的初始化脚本文件复制到容器的 /docker-entrypoint-initdb.d/ 目录中。最后,我们通过在 CMD 指令中添加 -c "shared_preload_libraries=''" 参数来覆盖默认的启动命令。解析示例 Dockerfile这个示例的 Dockerfile 首先使用 FROM 指令指定了基础镜像 postgres:latest,这个基础镜像提供了 PostgreSQL 数据库的运行环境。接下来,使用 COPY 指令将 init.sql 文件复制到容器的 /docker-entrypoint-initdb.d/ 目录中,这样在容器启动时 PostgreSQL 将自动运行该脚本文件来初始化数据库。最后,通过在 CMD 指令中添加 -c "shared_preload_libraries=''" 参数来覆盖默认的启动命令,这样就禁止了 Docker 运行 docker-entrypoint-initdb.d 目录中的 init 文件。通过修改 Dockerfile 中的 CMD 指令,我们可以轻松地禁止 Docker 运行 docker-entrypoint-initdb.d 目录中的 init 文件。这为我们在使用 Docker 部署 PostgreSQL 数据库时提供了更大的灵活性和控制力。希望本文对您有所帮助,谢谢阅读!参考链接:[Docker PostgreSQL - Disable Running init Files in docker-entrypoint-initdb.d](PostgreSQL-disable-running-init-files-in-docker-entrypoint-initdb-d">https://stackoverflow.com/questions/50399775/docker-PostgreSQL-disable-running-init-files-in-docker-entrypoint-initdb-d)Copyright © 2025 IZhiDa.com All Rights Reserved.
知答 版权所有 粤ICP备2023042255号