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

Cara membuat Pengguna/Database dalam skrip untuk Docker Postgres

EDIT - sejak 23 Juli 2015

Gambar buruh pelabuhan postgres resmi akan menjalankan .sql skrip yang ditemukan di /docker-entrypoint-initdb.d/ map.

Jadi yang Anda butuhkan hanyalah membuat skrip sql berikut:

init.sql

CREATE USER docker;
CREATE DATABASE docker;
GRANT ALL PRIVILEGES ON DATABASE docker TO docker;

dan tambahkan di Dockerfile Anda:

Dockerfile

FROM library/postgres
COPY init.sql /docker-entrypoint-initdb.d/

Namun sejak 8 Juli 2015, jika yang Anda butuhkan hanyalah membuat pengguna dan database , lebih mudah menggunakan POSTGRES_USER , POSTGRES_PASSWORD dan POSTGRES_DB variabel lingkungan:

docker run -e POSTGRES_USER=docker -e POSTGRES_PASSWORD=docker -e POSTGRES_DB=docker library/postgres

atau dengan Dockerfile:

FROM library/postgres
ENV POSTGRES_USER docker
ENV POSTGRES_PASSWORD docker
ENV POSTGRES_DB docker

untuk gambar yang lebih lama dari 23 Juli 2015

Dari dokumentasi image Docker postgres, dikatakan bahwa

[...] itu akan mencari skrip *.sh yang ditemukan di direktori itu [/docker-entrypoint-initdb.d ] untuk melakukan inisialisasi lebih lanjut sebelum memulai layanan

Yang penting di sini adalah "sebelum memulai layanan" . Ini berarti skrip Anda make_db.sh akan dieksekusi sebelum layanan postgres dimulai, maka pesan kesalahan "tidak dapat terhubung ke database postgres" .

Setelah itu ada informasi lain yang berguna:

Jika Anda perlu menjalankan perintah SQL sebagai bagian dari inisialisasi Anda, penggunaan mode pengguna tunggal Postgres sangat disarankan.

Setuju ini bisa sedikit misterius pada pandangan pertama. Apa yang dikatakan adalah bahwa skrip inisialisasi Anda harus memulai layanan postgres dalam mode tunggal sebelum melakukan tindakannya. Jadi Anda dapat mengubah make_db.ksh . Anda skrip sebagai berikut dan itu akan membuat Anda lebih dekat dengan apa yang Anda inginkan:

CATATAN , ini telah berubah baru-baru ini di komit berikut. Ini akan berfungsi dengan perubahan terbaru:

export PGUSER=postgres
psql <<- EOSQL
    CREATE USER docker;
    CREATE DATABASE docker;
    GRANT ALL PRIVILEGES ON DATABASE docker TO docker;
EOSQL

Sebelumnya, penggunaan --single mode diperlukan:

gosu postgres postgres --single <<- EOSQL
    CREATE USER docker;
    CREATE DATABASE docker;
    GRANT ALL PRIVILEGES ON DATABASE docker TO docker;
EOSQL


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Membuat Array di PostgreSQL

  2. Tidak dapat membuat layanan yang diminta [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

  3. Bagaimana cara membandingkan tanggal di bidang datetime di Postgresql?

  4. Pembaruan Postgresql dengan bergabung

  5. Postgres - FATAL:file database tidak kompatibel dengan server