PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Masalah izin dengan PostgreSQL dalam wadah buruh pelabuhan

Jawaban lain memang menunjuk ke akar penyebab masalah, namun halaman bantuan yang ditunjuknya tidak berisi solusi. Inilah yang saya buat untuk membuat ini bekerja untuk saya:

  1. mulai wadah menggunakan file komposisi buruh pelabuhan normal Anda, ini membuat direktori dengan hardcoded uid:gid (999:999)
version: '3.7'

services:
  db:
    image: postgres
    container_name: postgres
    volumes:
      - ./data:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: fake_database_user
      POSTGRES_PASSWORD: fake_database_PASSWORD
  1. hentikan penampung dan ubah kepemilikannya secara manual menjadi uid:gid yang Anda inginkan (saya akan menggunakan 1000:1000 untuk contoh ini
$ docker stop postgres
$ sudo chown -R 1000:1000 ./data 
  1. Edit file buruh pelabuhan Anda untuk menambahkan uid:gid yang Anda inginkan dan mulai lagi menggunakan komposisi buruh pelabuhan (perhatikan user: )
version: '3.7'

services:
  db:
    image: postgres
    container_name: postgres
    volumes:
      - ./data:/var/lib/postgresql/data
    user: 1000:1000
    environment:
      POSTGRES_USER: fake_database_user
      POSTGRES_PASSWORD: fake_database_password

Alasan Anda tidak bisa menggunakan user: dari awal adalah bahwa jika gambar dijalankan sebagai pengguna yang berbeda, ia gagal membuat file data.

Di halaman dokumentasi gambar , itu menyebutkan solusi untuk menambahkan volume untuk mengekspos /etc/passwd file sebagai hanya-baca pada gambar saat memberikan --user opsi, bagaimanapun, itu tidak berfungsi untuk saya dengan gambar terbaru, karena saya mendapatkan kesalahan berikut. Faktanya, tidak satu pun dari tiga solusi yang diusulkan berhasil untuk saya.

initdb: error: could not change permissions of directory "/var/lib/postgresql/data": Operation not permitted


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah dengan nama kolom berisi titik dua di PostgreSQL

  2. RPostgreSQL - Koneksi R ke Amazon Redshift - Cara MENULIS/Memposting Kumpulan Data yang Lebih Besar

  3. Mengakses file XML eksternal sebagai variabel dalam skrip PSQL (bersumber dari skrip bash)

  4. Postgres UPSERT menggunakan kembali nilai kolom dari INSERT pada UPDATE

  5. pg_ctl:kesalahan saat memuat pustaka bersama:libpq.so.5