Bạn cần nối hai mảnh ghép ở đây:
https://www.postgresql.org/docs/9.5/app-initdb.html
initdb, hướng dẫn bạn cách chuyển thông tin mã hóa tới chức năng tạo cơ sở dữ liệu.
Hình ảnh Docker chính thức của postgres, cho biết bạn có thể chuyển các tùy chọn sang initdb:
https://hub.docker.com/_/postgres
Vì vậy, câu trả lời sẽ giống như:
cơ sở dữ liệu:
hình ảnh: postgres: mới nhất
khối lượng:
- db:/var/lib/postgresql/data
môi trường:
POSTGRES_PASSWORD: kiểm tra
POSTGRES_INITDB_ARGS: '--encoding=UTF-8 --lc-collate=C --lc-ctype=C'
Hoặc những lập luận tương tự. Tôi đã bỏ qua tùy chọn lang, vì đây không phải là tùy chọn "chuyển cờ này cho postgres" chính thức trên trang hướng dẫn (liên kết đầu tiên tôi đưa vào).
Các thử nghiệm của tôi không chạy cái này bằng cách sử dụng docker Compose, nó nằm trên dòng lệnh bằng tùy chọn -e. Tuy nhiên, đây là cùng một khái niệm; "môi trường" trong soạn thảo docker là -e trên dòng lệnh. Để hóm hỉnh:
https://docs.docker.com/engine/reference/commandline/run/
--env , -e Đặt biến môi trường
Kiểm tra số 1 chỉ với bộ env mật khẩu:
docker run -e POSTGRES_PASSWORD=test postgres:latest
Đây là đầu ra của lần chạy mặc định:
postgres@cbf23636dabc:~$ psql
psql (13.4 (Debian 13.4-1.pgdg100+1))
Nhập "trợ giúp" để được trợ giúp.
postgres=# \l
Danh sách cơ sở dữ liệu
Tên | Chủ sở hữu | Mã hóa | đối chiếu | loại | đặc quyền truy cập
-----------+----------+----------+------------+--- ---------+-----------------------
bài đăng | bài đăng | UTF8 | vi_US.utf8 | vi_US.utf8 |
mẫu0 | bài đăng | UTF8 | vi_US.utf8 | vi_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
mẫu1 | bài đăng | UTF8 | vi_US.utf8 | vi_US.utf8 | =c/postgres +
| | | | | postgres=CTc/postgres
Thử nghiệm số 2, với các biến môi trường được đặt như trên trong docker được đề xuất chỉ soạn trên CLI:
docker run -e POSTGRES_PASSWORD=test -e POSTGRES_INITDB_ARGS='--encoding=UTF-8 --lc-collate=C --lc-ctype=C' postgres:latest
Và sau đó là đầu ra:
postgres@b6b80c876f3e:~$ psql
psql (13.4 (Debian 13.4-1.pgdg100+1))
Nhập "trợ giúp" để được trợ giúp.
postgres=# \l
Danh sách cơ sở dữ liệu
Tên | Chủ sở hữu | Mã hóa | đối chiếu | loại | đặc quyền truy cập
-----------+----------+----------+---------+------ -+-----------------------
bài đăng | bài đăng | UTF8 | C | C |
mẫu0 | bài đăng | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
mẫu1 | bài đăng | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
Cũng lưu ý, phần trên trang hình ảnh Postgresql Docker chính thức, nơi nó mô tả các tập lệnh khởi tạo. Đây là một cái gì đó bạn có thể xem xét là tốt.