Đường ống CI / CD với PostgreQuery không thành công với Cơ sở dữ liệu của Cameron không được khởi tạo và mật khẩu siêu người dùng không được chỉ định lỗi


18

Tôi đang sử dụng đường dẫn Bitbucket với PosgreSQL cho CI / CD. Theo tài liệu này, dịch vụ PostgreSQL đã được mô tả bitbucket-pipelines.ymltheo cách này:

definitions:
  services:
    postgres:
      image: postgres:9.6-alpine

Nó chỉ hoạt động tốt cho đến bây giờ. Nhưng tất cả các đường ống mới nhất của tôi đều thất bại với lỗi sau:

   Error: Database is uninitialized and superuser password is not specified.
   You must specify POSTGRES_PASSWORD for the superuser. Use
   "-e POSTGRES_PASSWORD=password" to set it in "docker run".

   You may also use POSTGRES_HOST_AUTH_METHOD=trust to allow all connections
   without a password. This is *not* recommended. See PostgreSQL
   documentation about "trust":
   https://www.postgresql.org/docs/current/auth-trust.html

Làm thế nào tôi có thể sửa chữa nó? Không có thay đổi trong bitbucket-pipelines.ymltập tin có thể là lý do của lỗi đó ..

Câu trả lời:


17

Có vẻ như lý do là cập nhật hình ảnh của docker ( vấn đề github ). Các phiên bản mới nhất không cho phép kết nối với DB mà không cần mật khẩu từ bất cứ đâu. Vì vậy, bạn cần chỉ định tên người dùng / mật khẩu:

definitions:
  services:
    postgres:
      image: postgres:9.6-alpine
      environment:
         POSTGRES_DB: pipelines
         POSTGRES_USER: test_user
         POSTGRES_PASSWORD: test_user_password

Hoặc nếu bạn vẫn không muốn sử dụng mật khẩu, bạn chỉ có thể đặt POSTGRES_HOST_AUTH_METHOD=trustbiến môi trường:

definitions:
  services:
    postgres:
      image: postgres:9.6-alpine
      environment:
        POSTGRES_HOST_AUTH_METHOD: trust

4

Đây là một thay đổi rất gần đây, tính đến khoảng một tuần trước. Một cách để tránh điều đó là mã hóa phiên bản postgres của bạn thành không mới nhất, ví dụ: thay đổi thành postgres:9.5.18hoặcpostgres:9.5.20-alpine

Một cách khác là truyền mật khẩu giả:

services:
  db:
    image: postgres
    ports:
      - "8001:5432"
    environment:
      - POSTGRES_PASSWORD=fake_password

Xem cuộc thảo luận tại đây: https://github.com/docker-l Library / postgres /issues / 681


1

Nếu bạn gặp sự cố khi kết nối Django với PostgreSQL qua Docker lần đầu tiên, thì hãy thêm tệp vào tệp POSTGRES_HOST_AUTH_METHOD: trustcủa bạn docker-compose.yml:

db: image: postgres:11 environment: POSTGRES_HOST_AUTH_METHOD: trust

Điều này giải quyết vấn đề kết nối cho tôi.

Cũng xin lưu ý rằng "Điều này không được khuyến nghị. Xem tài liệu của PostgreSQL về" niềm tin ": https://www.postgresql.org/docs/civerse/auth-trust.html "


Nếu điều này KHÔNG ĐƯỢC KHUYẾN NGHỊ, tại sao lại đề xuất nó? Thông báo rằng nó không được khuyến khích là tốt, nhưng cũng cung cấp lý do tại sao bạn đề xuất nó hoặc cung cấp một công việc xung quanh nó. Chắc chắn sẽ giúp. Chỉ là một ý kiến.
Khỉ ErroCode-112 được tìm thấy vào

Một cách tốt để giải quyết vấn đề này là chỉ định POSTGRES_PASSWORD cho siêu người dùng. Bạn có thể sử dụng "-e POSTGRES_PASSWORD = password" để đặt nó trong "
docker
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.