postgresql – 如何创建docker-compose版本2以使用卷拥有持久的postgres数据库?

前端之家收集整理的这篇文章主要介绍了postgresql – 如何创建docker-compose版本2以使用卷拥有持久的postgres数据库?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我知道使用较旧版本的docker-compose,我们可以创建另一个只包含数据卷的容器,并使用volumes_from链接它以使其成为“仅数据容器”.但是,我想测试使用新语法.
  1. version: '2'
  2. services:
  3. app:
  4. build: .
  5. links:
  6. - psql
  7. psql:
  8. image: postgres
  9. volumes_from:
  10. - psqldata
  11. ports:
  12. - "5432:5432"
  13. psqldata:
  14. image: postgres
  15. volumes:
  16. - psqlvolumes:/var/lib/postgresql/data/
  17.  
  18. volumes:
  19. psqlvolumes:
  20. driver: local

这是基于@L_301_0@.

我有另一个脚本运行,等待这个postgres容器在其他容器运行之前启动,例如:

  1. container:
  2. build: .
  3. volumes:
  4. - ./scripts/wait-for-postgres.sh:/code/wait-for-postgres.sh
  5. entrypoint: ./wait-for-postgres.sh "command"

脚本看起来像:

  1. #!/bin/bash
  2.  
  3. set -e
  4. export PGPASSWORD=postgres
  5. cmd="$@"
  6.  
  7. until psql -h "postgres" -U "postgres" -c '\l'; do
  8. >&2 echo "Postgres is unavailable - sleeping"
  9. sleep 1
  10. done
  11.  
  12. >&2 echo "Postgres is up - executing command"
  13. exec $cmd

这是从码头网站上获取的.

这只会导致容器停滞而根本不会出现,我甚至无法使用我需要的表来初始化postgres容器.

运行检查脚本不需要版本2,因为postgres一旦启动就会开始监听,您可以使用depends_on来定义依赖关系.以下是我在postgres上设置postgres,volume和server(glassfish)的方法
  1. version: '2'
  2.  
  3. services:
  4. my-app:
  5. image: my-glassfish-image
  6. depends_on:
  7. - my-db
  8.  
  9. my-db:
  10. image: my-postgres-image
  11. volumes:
  12. - postgres-db-volume:/data/postgres
  13.  
  14. volumes:
  15. postgres-db-volume:

猜你在找的Postgre SQL相关文章