首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么坞-组合失败和对接运行成功与postgresql?

为什么坞-组合失败和对接运行成功与postgresql?
EN

Stack Overflow用户
提问于 2019-09-18 08:31:01
回答 3查看 4.3K关注 0票数 1

我正在尝试用我的mac启动一个postgreSQL对接容器;我使用OSX10.11.16ElCapitan和docker 19.03.01。

如果我跑:

代码语言:javascript
复制
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:

代码语言:javascript
复制
version: "3"
services:
  db:
    image: "postgres:11"
    container_name: "my_postgres"
    ports:
      - "54320:5432"
    volumes:
      - my_dbdata:/var/lib/postgresql/data
volumes:
  my_dbdata:

然后跑

代码语言:javascript
复制
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日志:数据库系统关闭

为什么同样的想法与码头-撰写失败?

我提前感谢你

EN

回答 3

Stack Overflow用户

发布于 2019-09-18 09:01:16

试试下面那个对我有用的

代码语言:javascript
复制
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获取日志

票数 1
EN

Stack Overflow用户

发布于 2019-09-18 08:38:15

如果试图访问主机上的现有卷,则需要指定使用external关键字在撰写文件外部创建卷,如下所示:

代码语言:javascript
复制
version: "3.7"

services:
  db:
    image: postgres
    volumes:
      - data:/var/lib/postgresql/data

volumes:
  data:
    external: true

我从撰写文件参考https://docs.docker.com/compose/compose-file/中拿出了这个例子。

另外,在两次运行之间,还要检查外部卷的内容,以确定它是否被覆盖了。

也请再次检查你的引号,你不需要把图片的名字在引号中,但我不认为这是问题。

票数 0
EN

Stack Overflow用户

发布于 2019-09-18 14:17:16

对于这两种情况,命名的my_dbdata卷并不相同。docker run创建一个名为my_dbdata的卷,而docker-compose默认创建一个名为<dir>_my_dbdata的卷

运行docker volume列出卷:

代码语言:javascript
复制
docker volume ls |grep my_dbdata 

我怀疑docker-compose创建的卷存在问题,因此postgres没有正确启动。my_postgres容器中数据库的初始化只进行一次。

尝试删除容器和docker-compose创建的卷

代码语言:javascript
复制
docker rm my_postgres
docker volume rm <dir>_my_dbdata 

希望它能帮上忙

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57988349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档