在官方的邮递员形象之后,您可以设置一个入口点,在那里放置初始化脚本。
这个很好用。对于开发/测试,我希望在每个容器启动时都有一个干净的数据库,而不仅仅是在第一个容器启动时。
docker-entrypoint-initdb.d中的所有脚本只运行一次(容器第一次启动时)。
在容器通过docker-compose启动时,是否有一种简单的方法来执行脚本
我把DROP TABLE IF EXISTS放在每个CREATE TABLE的前面,所以.sql脚本即使在一个新的启动程序上也能工作。
船坞的相关部分-如果有人需要的话:
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发布于 2021-04-30 15:36:44
您需要一个重新启动的“循环脚本”,它应该包含:
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),并显式地删除卷而不是剪枝。
# docker-compose.override.yml
postgres-myname:
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
- pgdata然后
docker volume rm -f "$(basename "`/bin/pwd`")_pgdata"https://stackoverflow.com/questions/59767981
复制相似问题