无法运行PostgreSQL 17.4 Docker镜像的技术求助
JHipster PostgreSQL Docker 启动问题排查与解决
1. 根级别name字段错误的处理
你遇到的第一个错误是因为Docker Compose v3语法不支持根级别的name字段,而添加的version: '3.3'强制启用了v3模式。解决方式二选一:
- 保留
name: myapp并移除version: '3.3'(使用Compose v2原生语法) - 保留
version: '3.3',通过命令行指定项目名:docker-compose -p myapp -f src/main/docker/postgresql.yml up
2. 内存不足与PostgreSQL路径错误的修复
调整Docker内存分配
Cannot allocate memory是Docker可用内存不足导致的,即使容器未启动,也可以在Docker Desktop设置中调整:
- 打开Docker Desktop → 设置 → 资源 → 高级,将内存分配调整至至少2GB(推荐4GB)
- 重启Docker后重新执行启动命令
降级PostgreSQL版本
PostgreSQL 17属于较新的大版本,可能与JHipster生成的配置存在兼容性问题,建议切换到官方推荐的稳定版本postgres:16-alpine(轻量镜像,资源占用更低),修改配置中的image字段:
image: postgres:16-alpine
完善环境变量配置
显式指定数据库名,避免默认逻辑可能出现的异常:
environment: - POSTGRES_USER=myapp - POSTGRES_DB=myapp - POSTGRES_HOST_AUTH_METHOD=trust
修复后的完整配置
version: '3.3' services: postgresql: image: postgres:16-alpine volumes: - ~/volumes/jhipster/myapp/postgresql/:/var/lib/postgresql/data/ environment: - POSTGRES_USER=myapp - POSTGRES_DB=myapp - POSTGRES_HOST_AUTH_METHOD=trust healthcheck: test: ['CMD-SHELL', 'pg_isready -U $${POSTGRES_USER}'] interval: 5s timeout: 5s retries: 10 ports: - 127.0.0.1:5432:5432
内存限制优化(可选)
如果内存仍然紧张,可以给容器添加内存限制:
services: postgresql: # ... 其他配置 deploy: resources: limits: memory: 1G reservations: memory: 512M
执行启动命令时需添加兼容性参数:docker-compose --compatibility -f src/main/docker/postgresql.yml up
内容的提问来源于stack exchange,提问作者vic
相关产品推荐
相关产品推荐

