如何更正我的 postgres 图像中的 set work_mem amd max_wal_size

shu*_*van 4 postgresql docker docker-compose

我想为我的 postgres 映像设置一些配置,需要增加 work_mem 和max_wal_size,但遇到错误

/usr/local/bin/docker-entrypoint.sh: line 315: exec: postgres -c max_wal_size=2GB -c work_mem=2GB: not found
Run Code Online (Sandbox Code Playgroud)

版本

Docker version 19.03.8, build afacb8b7f0
docker-compose version 1.23.1, build b02f1306
Run Code Online (Sandbox Code Playgroud)

和我的码头工人组成

version: '3'
services:

postgres:
    image: postgres:11-alpine
    shm_size: 5g
    command: postgres -c max_wal_size=2GB -c work_mem=2GB
    ports:
        - '5432:5432'
    container_name: 'postgresql_alpine'
    working_dir: /app
    restart: always
    environment:
        POSTGRES_DB: ${POSTGRES_DB}
        POSTGRES_USER: ${POSTGRES_USER}
        POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
        LC_COLLATE: 'sv_SE.UTF-8'
        LC_CTYPE: 'sv_SE.UTF-8'
    volumes:
        - ./data/postgresql:/var/lib/postgresql/data
    networks:
        - php
Run Code Online (Sandbox Code Playgroud)

和错误

ivan@ivan-laptop:~/hosts/docker-symfony$ docker logs d30c27661a48
/usr/local/bin/docker-entrypoint.sh: line 315: exec: postgres -c max_wal_size=2GB -c work_mem=2GB: not found
Run Code Online (Sandbox Code Playgroud)

如何更正我的 postgres 图像中的 set work_mem amd max_wal_size ?

解决 首先我删除目录data/postgres并再次创建,然后删除所有

docker system prune -a --volumes
Run Code Online (Sandbox Code Playgroud)

图像并重建并再次启动

小智 11

默认的 postgres Docker 镜像入口点直接接受参数,您应该postgres在命令序列中省略。

version: '3'

services:
  postgres:
    image: postgres:12-alpine
    ...
    command: >
      -c work_mem=256MB
      -c maintenance_work_mem=256MB
      -c max_wal_size=1GB
    ...
Run Code Online (Sandbox Code Playgroud)