fe_sendauth:未提供密码 (PG::ConnectionBad) Docker 容器

伊姆兰·艾哈迈德 |

我按照教程对现有的 rails 应用程序进行了 dockerize。该应用程序在开发环境中成功运行但是当我尝试以声明env 的方式运行时,我收到了错误消息。我为陈述和开发保留了相同的配置。这是我的相关文件:

数据库.yml

default: &default
  adapter: postgresql
  encoding: unicode
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  pool: 10
  timeout: 5000
  database: <%= ENV['DATABASE_NAME'] %>
  username: <%= ENV['DATABASE_USER_NAME'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>
  host: db
  port: 5432

staging:
  <<: *default
  pool: 10
  timeout: 5000
  database: <%= ENV['DATABASE_NAME'] %>
  username: <%= ENV['DATABASE_USER_NAME'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>
  host: db
  port: 5432

应用程序.yml

development:
  DATABASE_USER_NAME: 'developer'
  DATABASE_PASSWORD: 'qmwneb10PG'
  DATABASE_NAME: 'concern_box'
staging:
  DATABASE_USER_NAME: 'developer'
  DATABASE_PASSWORD: 'qmwneb10PG'
  DATABASE_NAME: 'concern_box'

docker-compose.yml

version: '3'
services:
  app:
    build: .
    container_name: cb_app_container
  db:
    container_name: cb_db_container
    image: postgres:9.6
    hostname: postgres
    ports:
      - "5432:5432"

docker-compose.stag.yml

version: '3'
services:
  app:
    environment:
      RAILS_ENV: staging
    command: bundle exec rails s -p 80 -b '0.0.0.0'
    ports:
      - "80:80"
    depends_on:
      - db

  db:
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql

docker-compose.dev.yml

version: '3'
services:
  app:
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    stdin_open: true
    tty: true
    volumes:
      - .:/concern-box
    ports:
      - "3001:3000"
    depends_on:
      - db

  db:
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql

初始化程序

CREATE USER developer WITH PASSWORD 'qmwneb10PG';
CREATE DATABASE concern_box;
GRANT ALL PRIVILEGES ON DATABASE concern_box TO developer;

我正在使用以下命令docker-compose -f docker-compose.yml -f docker-compose.dev.yml up --force-recreate为开发环境旋转容器docker-compose -f docker-compose.yml -f docker-compose.stag.yml up --force-recreate作为暂存环境运行。

让-雅克·莫伊鲁

在 database.yml 上,development并且staging正在从 ENV[] 加载,你的容器应该有从 Os 环境加载的秘密

不要忘记将您的机密加载到主机环境中,或者使用 docker-compose 中的 env_file 功能

docker-compose.stag.yml

version: '3'
services:
  app:
    environment:
      RAILS_ENV: staging
      DATABASE_USER_NAME: ${DATABASE_USER_NAME}  # <-- Add this
      DATABASE_PASSWORD: ${DATABASE_PASSWORD}    # <-- Add this
      DATABASE_NAME: ${DATABASE_NAME}            # <-- Add this
    command: bundle exec rails s -p 80 -b '0.0.0.0'
    ports:
      - "80:80"
    depends_on:
      - db

  db:
    expose:
      - 5432    # Just to make sure app will see the port
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql

docker-compose.dev.yml

version: '3'
services:
  app:
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    environment:
      DATABASE_USER_NAME: ${DATABASE_USER_NAME}  # <-- Add this
      DATABASE_PASSWORD: ${DATABASE_PASSWORD}    # <-- Add this
      DATABASE_NAME: ${DATABASE_NAME}            # <-- Add this
    stdin_open: true
    tty: true
    volumes:
      - .:/concern-box
    ports:
      - "3001:3000"
    depends_on:
      - db

  db:
    expose:
      - 5432    # Just to make sure app will see the port
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql

database.yml 从 ENV[] 加载,而不是从文件加载 application.yml

database.yml
...
staging:
  <<: *default
  pool: 10
  timeout: 5000
  database: <%= ENV['DATABASE_NAME'] %>
  username: <%= ENV['DATABASE_USER_NAME'] %>
  password: <%= ENV['DATABASE_PASSWORD'] %>
  host: db
  port: 5432
...

application.yml
staging:
  DATABASE_USER_NAME: 'developer'
  DATABASE_PASSWORD: 'qmwneb10PG'
  DATABASE_NAME: 'concern_box'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

capistrano,rails,PG :: ConnectionBad:fe_sendauth:未提供密码

PG :: ConnectionBad:fe_sendauth:未提供密码

PG :: ConnectionBad fe_sendauth:未提供密码

PostgreSQL数据库迁移错误:PG :: ConnectionBad:fe_sendauth:未提供密码

Rails Postgres Github 操作错误:PG::ConnectionBad:fe_sendauth:未提供密码

耙子流产了!PG :: ConnectionBad:fe_sendauth:未提供密码sinatra

Rails 每当 rake 中止时!PG::ConnectionBad: fe_sendauth: 没有提供密码

耙子中止!PG::ConnectionBad: fe_sendauth: 没有提供密码

将postgres作为Docker服务运行时,“ psql:fe_sendauth:未提供密码”

生产中的 Rails 5:PG::ConnectionBad:致命:用户“postgres”与 Docker 的密码身份验证失败

PG :: ConnectionBad错误

Rails Capistrano部署PG :: ConnectionBad:严重:密码验证失败

PG :: ConnectionBad:严重:用户“ alphauser”的密码身份验证失败

PostgreSQL fe_sendauth:未提供密码

Docker容器中的pg_dump

具有PG :: ConnectionBad“ /var/run/postgresql/.s.PGSQL.5432”的Rails,Postgres和Docker?

POSTGRES问题:fe_sendauth:未提供密码

PG::ConnectionBad: FATAL: 生产服务器上用户“postgres”的密码验证失败

未保存 Docker 容器

Docker容器内的root密码

sqlalchemy.exc.OperationalError:(psycopg2.OperationalError)fe_sendauth:未提供密码

AWS-DJANGO-格式错误:OperationalError:fe_sendauth:未提供密码

Django fe_sendauth:未提供密码错误,无法连接到Postgres数据库

错误psycopg2.OperationalError:fe_sendauth:即使在postgres授权连接后也未提供密码

Docker-容器未运行

MySQL Docker容器未安装

Docker 容器状态未启动

PG :: ConnectionBad:无法连接到服务器:连接被拒绝

PG :: ConnectionBad严重:角色“ Myname”不存在