【问题标题】:docker-compose postgresql docker-entrypoint-initdb.sh not workingdocker-compose postgresql docker-entrypoint-initdb.sh 不工作
【发布时间】:2020-06-11 14:33:24
【问题描述】:

我的 docker-compose.yml 是

  database:
    container_name: k4fntr_database
    build: ./docker/postgres
    restart: always
    environment:
      ENV: ${APP_ENV}
      TESTING_DB: ${DB_DATABASE_TESTING}
      POSTGRES_DB: ${DB_DATABASE}
      POSTGRES_USER: ${DB_USERNAME}
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    ports:
      - "15432:5432"
    networks:
      - backend-network

我的 Dockerfile 是

FROM postgres:10.5-alpine
COPY /docker-entrypoint-initdb.d/ /docker-entrypoint-initdb.d/

docker-entrypoint-initdb.d 文件夹中的脚本存在于容器中,但未运行

如果我在容器内运行此脚本,它们可以正常工作。

我也尝试移除容器并一次又一次地重建它,但它仍然无法正常工作!

【问题讨论】:

  • 您需要运行命令或脚本。 COPY不要自己执行任何脚本
  • postgres docker 的文档说我只需要将我所有的 sql 和 sh 脚本复制到文件夹 hub.docker.com/_/postgres

标签: docker docker-compose


【解决方案1】:

“警告:/docker-entrypoint-initdb.d 中的脚本仅在您使用空数据目录启动容器时运行;任何预先存在的数据库在容器启动时都将保持不变。

一个常见问题是,如果您的 /docker-entrypoint-initdb.d 脚本之一失败(这将导致入口点脚本退出)并且您的协调器使用已经初始化的数据重新启动容器目录,它不会继续执行您的脚本。”

来自https://hub.docker.com/_/postgres

更新1

您确定主机文件夹是 /docker-entrypoint-initdb.d/ 吗? (在您主机的根路径上,看起来很奇怪)。也许像./docker-entrypoint-initdb.d/这样的东西@

【讨论】:

  • 是的。但我的脚本甚至没有运行。
  • 确保您要运行的脚本有权执行chmod +x script.sh
  • 是的。我做了 RUN chmod 0755 -R /docker-entrypoint-initdb.d/ 但没有效果
【解决方案2】:

我的 sh 脚本有一个错误。我发现了

的错误

docker 记录 k4fntr_database

命令

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 2021-11-24
    • 2020-06-12
    • 2019-07-22
    相关资源
    最近更新 更多