PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Làm cách nào để tùy chỉnh tệp cấu hình của hình ảnh PostgreSQL Docker chính thức?

Với Docker Compose

Khi làm việc với Docker Compose, bạn có thể sử dụng lệnh command: postgres -c option=value trong docker-compose.yml của bạn để định cấu hình Postgres.

Ví dụ:điều này làm cho Postgres đăng nhập vào một tệp:

command: postgres -c logging_collector=on -c log_destination=stderr -c log_directory=/logs

Điều chỉnh câu trả lời của Vojtech Vitek, bạn có thể sử dụng

command: postgres -c config_file=/etc/postgresql.conf

để thay đổi tệp cấu hình mà Postgres sẽ sử dụng. Bạn sẽ gắn tệp cấu hình tùy chỉnh của mình với một ổ đĩa:

volumes:
   - ./customPostgresql.conf:/etc/postgresql.conf

Đây là docker-compose.yml ứng dụng của tôi, hiển thị cách định cấu hình Postgres:

# Start the app using docker-compose pull && docker-compose up to make sure you have the latest image
version: '2.1'
services:
  myApp:
    image: registry.gitlab.com/bullbytes/myApp:latest
    networks:
      - myApp-network
  db:
     image: postgres:9.6.1
     # Make Postgres log to a file.
     # More on logging with Postgres: https://www.postgresql.org/docs/current/static/runtime-config-logging.html
     command: postgres -c logging_collector=on -c log_destination=stderr -c log_directory=/logs
     environment:
       # Provide the password via an environment variable. If the variable is unset or empty, use a default password
       # Explanation of this shell feature: https://unix.stackexchange.com/questions/122845/using-a-b-for-variable-assignment-in-scripts/122848#122848
       - POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-4WXUms893U6j4GE&Hvk3S*hqcqebFgo!vZi}
     # If on a non-Linux OS, make sure you share the drive used here. Go to Docker's settings -> Shared Drives
     volumes:
       # Persist the data between container invocations
       - postgresVolume:/var/lib/postgresql/data
       - ./logs:/logs
     networks:
       myApp-network:
         # Our application can communicate with the database using this hostname
         aliases:
           - postgresForMyApp
networks:
  myApp-network:
    driver: bridge
# Creates a named volume to persist our data. When on a non-Linux OS, the volume's data will be in the Docker VM
# (e.g., MobyLinuxVM) in /var/lib/docker/volumes/
volumes:
  postgresVolume:

Quyền ghi vào thư mục nhật ký

Lưu ý rằng khi ở trên Linux, thư mục nhật ký trên máy chủ phải có quyền phù hợp, nếu không bạn sẽ gặp lỗi hơi gây hiểu lầm

FATAL:không thể mở tệp nhật ký "/logs/postgresql-2017-02-04_115222.log":Quyền bị từ chối

Tôi nói là gây hiểu lầm, vì thông báo lỗi gợi ý rằng thư mục trong vùng chứa có quyền sai, trong khi thực tế là thư mục trên máy chủ lưu trữ không cho phép viết.

Để khắc phục điều này, tôi đã đặt các quyền chính xác trên máy chủ lưu trữ bằng cách sử dụng

chgroup ./logs docker && chmod 770 ./logs


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhập dữ liệu Excel vào PostgreSQL 9.3

  2. Thêm (đẩy) và xóa khỏi mảng JSON trong PostgreSQL 9.5+

  3. Rails Console tìm người dùng theo mảng id

  4. Làm cách nào để truy vấn các mảng lồng nhau trong một cột postgres json?

  5. Cải thiện tốc độ truy vấn:SELECT đơn giản trong bảng postgres lớn