如何使用 docker 将 Payload cms 连接到 postgresql 数据库进行本地开发?

问题描述 投票:0回答:1

我正在使用 docker 创建 postgresql 数据库。 不幸的是,安装指南对我来说不够详细,也许是因为我是 docker 新手,我可能会遗漏一些东西。

https://payloadcms.com/docs/product/deployment#docker

这是我的 docker-compose.yml:

version: '3'

services:
  payload:
    image: node:18-alpine
    ports:
      - '3000:3000'
    volumes:
      - .:/home/node/app
      - node_modules:/home/node/app/node_modules
    working_dir: /home/node/app/
    command: sh -c "yarn install && yarn dev"
    depends_on:
      - mongo
      - postgres
    env_file:
      - .env

  mongo:
    image: mongo:latest
    ports:
      - '27017:27017'
    command:
      - --storageEngine=wiredTiger
    volumes:
      - data:/data/db
    logging:
      driver: none

  postgres:
    image: postgres:latest
    ports:
      - '5432:5432'
    environment:
      POSTGRES_DB: ExperimentOne
      POSTGRES_USER: user
      POSTGRES_PASSWORD: password
    volumes:
      - pgdata:/var/lib/postgresql/data
    logging:
      driver: none

  pgadmin:
    image: dpage/pgadmin4
    environment:
      PGADMIN_DEFAULT_EMAIL: [email protected]
      PGADMIN_DEFAULT_PASSWORD: admin
    ports:
      - "5050:80"
    depends_on:
      - postgres

volumes:
  data:
  node_modules:
  pgdata:

这是我的.env:

DATABASE_URI=postgres://user:[email protected]:5432/experimentOne
PAYLOAD_SECRET=1f9719d86d80cca708048d07
PAYLOAD_PUBLIC_SERVER_URL=http://localhost:3000
NEXT_PUBLIC_SERVER_URL=http://localhost:3000

我非常确定密码、用户名和 IP 地址是正确的,因为我使用相同的信息通过 pgadmin 连接到数据库。但是 docker 内部的 IP 地址并不总是相同的,所以上次我想连接到 pgadmin 时,我必须使用 docker inform [container_id] 检查 docker 中的 IP。

PAYLOAD_SECRET 可能是错误的,它是在有效负载设置期间生成的,我不知道它的作用,但我猜这不是问题。

如果我尝试打开: http://localhost:3000/admin 无法连接。 ns_error_connection_refused

[在此输入图片描述](https://i.sstatic.net/jtrr5sqF.png)

有什么想法吗?

我尝试将变量添加到.env。

我陷入困境,因为错误消息没有帮助。

docker devops payload
1个回答
0
投票

将 DATABASE_URI 中的 IP 地址更改为 postgres,即 Docker 中的服务名称。更新为:

DATABASE_URI=postgres://user:password@postgres:5432/ExperimentOne

这样,Docker 在内部处理 IP 地址。

如果您不确定 PAYLOAD_SECRET,只需创建一个新的随机字符串并替换旧的。

另外,运行 docker-compose log payload 来查看尝试启动 Payload 服务时是否有任何错误消息。当您进行更改时,您可以执行以下操作:

docker-compose down
docker-compose up -d

最后确保您的计算机上没有其他任何东西正在使用端口 3000。如果一切设置正确,您应该能够通过 http://localhost:3000/admin 访问它

© www.soinside.com 2019 - 2024. All rights reserved.