kam*_*pta 5 postgresql docker docker-compose
我正在运行一个带有以下内容的 postgres 实例docker-compose.yml
-
postgres:
restart: always
image: postgres:latest
volumes:
- /data:/var/lib/postgresql
ports:
- "5432:5432"
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=123456
- POSTGRES_DB=mydb
- PGDATA=/var/lib/postgresql/data
Run Code Online (Sandbox Code Playgroud)
我添加了一些行数很少的表。我对文件做了一个小改动,添加了container_name: postgres
,然后重新启动docker-compose up -d
现在当我登录到数据库时,我看不到任何表/数据。
psql -h ###### -p 5432 -d mydb -U admin --password
Run Code Online (Sandbox Code Playgroud)
数据目录作为卷添加并且是完整的。
这与初始化postgres有关吗?
更新 2016/10/02
请注意,这/data
是安装在主机上的外部硬盘驱动器docker-machine
。
更新 2016/10/02
我还注意到,当我更改docker-compose.yml
(from /home/ubuntu/dev/docker-storage/docker-compose.yml
to /home/ubuntu/dev/storage/docker-compose.yml
)的重命名位置并执行 a 时docker-compose up -d
,我收到一条错误消息
ERROR: for postgres Conflict. The name "/postgres" is already in use by container 6de8378a8156ec368748194f8912836a7b5e3212fbb69627093d0f6114b82f0d.
You have to remove (or rename) that container to be able to reuse that name.
Run Code Online (Sandbox Code Playgroud)
这就是问题的来源吗?我可能已经移除了原来的容器。
更新 2016/10/06
这似乎现在起作用了。出于某种奇怪的原因,我不得不同时安装/var/lib/postgresql
和/var/lib/postgresql/data
postgres:
restart: always
image: postgres:latest
container_name: postgres
volumes:
- /data/postgresql:/var/lib/postgresql
- /data/postgresql/data:/var/lib/postgresql/data
ports:
- "5432:5432"
environment:
- POSTGRES_USER=admin
- POSTGRES_PASSWORD=123456
- POSTGRES_DB=mydb
Run Code Online (Sandbox Code Playgroud)
你所做的是一个黑客!官方的做法是有一个名为 PGDATA 的环境变量,与容器卷路径相同
干得好:
postgres:
restart: always
image: postgres:latest
container_name: postgres
volumes:
- ${PATH_TO_STORAGE}:/var/lib/postgresql/data/:rw <--- check this out
ports:
- "5432:5432"
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
PGDATA: /var/lib/postgresql/data/ <--- Check this out
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助 :)
归档时间: |
|
查看次数: |
5945 次 |
最近记录: |