繁体   English   中英

无法在 Docker 上运行或连接 Portgresql 容器

[英]Cannot run or connect Portgresql container on Docker

在我的 Windows 10 机器中,我有一个 Java 应用程序并使用以下配置在 ZC5FD214CDD3DB3B4272E 上创建Postgresql图像:

docker-compose.yml: *

version: '2.0'

services:
  postgresql:
    image: postgres:11

    ports:
      - "5432:5432"
    expose:
      - "5432"
    environment:
      - POSTGRES_USER=demo
      - POSTGRES_PASSWORD=******
      - POSTGRES_DB=demo_test

我使用以下命令来组合图像:

cd postgresql
docker-compose up -d

尽管 pgadmin 容器正在 Docker 上运行,但 postgres 容器通常正在重新启动 state 并且某些似乎正在运行 state 一秒钟。 当我查看该容器日志时,我发现我遇到了以下错误:

2021-03-16 09:00:18.526 UTC [82] 致命:数据目录“/data/postgres”的所有权错误

2021-03-16 09:00:18.526 UTC [82] 提示:服务器必须由拥有数据目录的用户启动。

子进程以退出代码 1 退出

*initdb:删除数据目录“/data/postgres”的内容

运行引导脚本...属于该数据库系统的文件将归用户“postgres”所有。 该用户还必须拥有服务器进程。

我尝试应用几个解决方法建议,例如PostgreSQL 和 docker 所有权问题,但没有一个有效。 那么,我该如何解决这个问题呢?

更新:这是我docker-compoese.yml文件的最后状态:

version: '2.0'

services:
  postgresql:
    image: postgres:11
    container_name: "my-pg"
    ports:
      - "5432:5432"
    expose:
      - "5432"
    environment:
      - POSTGRES_USER=demo
      - POSTGRES_PASSWORD=******
      - POSTGRES_DB=demo_test
    volumes:
      - psql:/var/lib/postgresql/data

volumes:
  psql:

正如我在评论中已经说过的,我建议使用命名卷。

这是 Postgres 12 的 docker-compose.yml:

version: "3"
services:
  postgres:
    image: "postgres:12"
    container_name: "my-pg"
    ports:
      - 5432:5432
    environment:
      POSTGRES_USER: "postgres"
      POSTGRES_PASSWORD: "postgres"
      POSTGRES_DB: "mydb"
    volumes: 
      - psql:/var/lib/postgresql/data

volumes:
  psql:

然后我通过docker volume create psql创建了psql卷(所以只是一个没有任何实际路径映射的卷)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM