我正在尝试用我的mac启动一个postgreSQL对接容器;我使用OSX10.11.16ElCapitan和docker 19.03.01。
如果我跑:
docker run --name my_postgres -v my_dbdata:/var/lib/postgresql/data -p 54320:5432 postgres:11一切都完成了,我得到:
my_postgres 2019-09-17 04:51:48.908 UTC 41日志:数据库系统已准备好接受连接
但是,如果我使用像这样的.yml文件:
docker-compose.yml:
version: "3"
services:
db:
image: "postgres:11"
container_name: "my_postgres"
ports:
- "54320:5432"
volumes:
- my_dbdata:/var/lib/postgresql/data
volumes:
my_dbdata:然后跑
docker-compose up我得到的却是:
my_postgres /usr/local/bin/docker-entrypoint.sh:忽略/码头-入口点-initdb.d/* my_postgres my_postgres 209-09-1704:51:49.009 UTC 41日志:收到快速关机请求my_postgres 2019-09-17 04:51:49.011 UTC 41日志:中止等待服务器关闭的任何活动事务my_postgres _背景工作器“逻辑复制启动程序”(PID 48)退出代码1 my_postgres \209-09-1704:51:49.091 UTC 43日志:关闭my_postgres \209-09-1704:51:49.145 UTC 41日志:数据库系统关闭
为什么同样的想法与码头-撰写失败?
我提前感谢你
发布于 2019-09-18 09:01:16
试试下面那个对我有用的
version: '3.1'
services:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: mypassword
volumes:
- ./postgres-data:/var/lib/postgresql/data
ports:
- 5432:5432使用前面的命令“使用docker-compose up docker-compose logs -f”之后,使用docker-compose logs -f获取日志
发布于 2019-09-18 08:38:15
如果试图访问主机上的现有卷,则需要指定使用external关键字在撰写文件外部创建卷,如下所示:
version: "3.7"
services:
db:
image: postgres
volumes:
- data:/var/lib/postgresql/data
volumes:
data:
external: true我从撰写文件参考https://docs.docker.com/compose/compose-file/中拿出了这个例子。
另外,在两次运行之间,还要检查外部卷的内容,以确定它是否被覆盖了。
也请再次检查你的引号,你不需要把图片的名字在引号中,但我不认为这是问题。
发布于 2019-09-18 14:17:16
对于这两种情况,命名的my_dbdata卷并不相同。docker run创建一个名为my_dbdata的卷,而docker-compose默认创建一个名为<dir>_my_dbdata的卷
运行docker volume列出卷:
docker volume ls |grep my_dbdata 我怀疑docker-compose创建的卷存在问题,因此postgres没有正确启动。my_postgres容器中数据库的初始化只进行一次。
尝试删除容器和docker-compose创建的卷
docker rm my_postgres
docker volume rm <dir>_my_dbdata 希望它能帮上忙
https://stackoverflow.com/questions/57988349
复制相似问题