首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >码头内的Postgres;每次启动容器时重新加载数据库/ init脚本

码头内的Postgres;每次启动容器时重新加载数据库/ init脚本
EN

Stack Overflow用户
提问于 2020-01-16 10:48:31
回答 1查看 1.7K关注 0票数 4

官方的邮递员形象之后,您可以设置一个入口点,在那里放置初始化脚本。

这个很好用。对于开发/测试,我希望在每个容器启动时都有一个干净的数据库,而不仅仅是在第一个容器启动时。

docker-entrypoint-initdb.d中的所有脚本只运行一次(容器第一次启动时)。

在容器通过docker-compose启动时,是否有一种简单的方法来执行脚本

我把DROP TABLE IF EXISTS放在每个CREATE TABLE的前面,所以.sql脚本即使在一个新的启动程序上也能工作。

船坞的相关部分-如果有人需要的话:

代码语言:javascript
运行
复制
postgres-myname:
    image: postgres:12.1-alpine
    environment:
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=postgres
      - POSTGRES_DB=postgres-db
    ports:
      - "54320:5432"
    build:
      context: .
      dockerfile: postgresql-config/Dockerfile
    networks:
      - my-network
EN

回答 1

Stack Overflow用户

发布于 2021-04-30 15:36:44

您需要一个重新启动的“循环脚本”,它应该包含:

代码语言:javascript
运行
复制
docker-compose rm -vs postgres-myname
docker volume prune -f --filter label=protgres-myname

docker-compose up -d

在脚本中使用docker volume prune之前,我建议您先了解一下它。

我还建议将命名卷映射到postgres数据目录(/var/lib/postgresql/data),并显式地删除卷而不是剪枝。

代码语言:javascript
运行
复制
# docker-compose.override.yml
postgres-myname:
    volumes:
        - pgdata:/var/lib/postgresql/data

volumes:
    - pgdata

然后

代码语言:javascript
运行
复制
docker volume rm -f "$(basename "`/bin/pwd`")_pgdata"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59767981

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档