Ric*_*ard 1 postgresql docker dockerfile docker-compose
我想在启动 Postgres Docker 映像后创建一个数据库。
问题是,如果我将数据库创建命令放入 docker-compose 文件或子 dockerfile 中,它会覆盖基本映像的命令以实际启动 postgres - 所以我的 psql 没有可连接的已启动服务器。
例如:
version: '2'
services:
db:
command: bash -c "su - postgres -c '/usr/lib/postgresql/9.6/bin/psql -h 127.0.0.1 -p 6543 -U postgres -c \"create database dev;\"'"
environment:
- PGDATA=/pg
- POSTGRES_PASSWORD=postgres
- POSTGRES_USER=postgres
image: postgres:9.6
ports:
- '6543:5432'
tmpfs: /pg
Run Code Online (Sandbox Code Playgroud)
并且图像文档没有说明他们运行来启动 Postgres 的确切命令。我尝试将bash -c "postgres && ...命令放在命令的开头,但它失败告诉我无法以 root 身份启动 Postgres。
我能找到的唯一可能的解决方案是放弃 docker-compose 和 dockerfile,转而使用 bash 脚本解决方案,但这docker run postgres:9.6 psql -h postgres -U postgres -c 'create database'太可怕了。
该怎么办?
我不会这样做。为什么不使用所需的数据库名称启动第二个容器?
environment:
- PGDATA=/pg
- POSTGRES_PASSWORD=postgres
- POSTGRES_USER=postgres
- POSTGRES_DB=dev
Run Code Online (Sandbox Code Playgroud)
只需为每个数据库运行一个容器..我更喜欢将其作为干净的解决方案。
| 归档时间: |
|
| 查看次数: |
5064 次 |
| 最近记录: |