首先,我知道这个问题有答案:
但是在任何情况下,您都必须手动执行,我想找到一个答案,我可以在我的CI/CD管道上自动完成,以便在生产中部署。
我得到的错误是:
FATAL: password authentication failed for user "Jenkins_project"
Couldn't create 'Jenkins_project_production' database. Please check your configuration.
rake aborted!
PG::ConnectionBad: FATAL: password authentication failed for user "Jenkins_project"当我试图创建和迁移DB时,就会发生这种情况:
docker-compose -f docker-compose.override.yml --env-file .env run web rake db:create db:migrate我使用-f docker-compose.override.yml是因为我试图将它部署到AWS EC2服务器中。docker-compose.override.yml看起来如下所示:
version: "3"
services:
db:
image: postgres
environment:
POSTGRES_USER: ${POSTGRES_USER:-default}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-default}
JENKINS_PROJECT_DATABASE_PASSWORD: ${JENKINS_PROJECT_DATABASE_PASSWORD:-default}
volumes:
- ./tmp/db:/var/lib/postgresql/data
web:
build: .
ports:
- "3000:3000"
depends_on:
- db
environment:
POSTGRES_USER: ${POSTGRES_USER:-default}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-default}
POSTGRES_HOST: ${POSTGRES_HOST:-default}
JENKINS_PROJECT_DATABASE_PASSWORD: ${JENKINS_PROJECT_DATABASE_PASSWORD:-default}这是连接到.env文件的,所以我在docker-compose命令上调用--env-file .env。
.env看起来如下所示:
POSTGRES_USER=user
POSTGRES_PASSWORD=password
POSTGRES_HOST=host
JENKINS_PROJECT_DATABASE_PASSWORD=jenkins_password我的database.yml看起来是这样的:
default: &default
adapter: postgresql
encoding: unicode
host: db
username: user
password: password
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: Jenkins_project_development
production:
<<: *default
database: Jenkins_project_production
username: Jenkins_project
password: <%= ENV['JENKINS_PROJECT_DATABASE_PASSWORD'] %>我要做的是在运行命令时将.env文件“机密”传递给docker-compose.override.yml上的每个服务,然后从那里填充database.yml上的<%= ENV['JENKINS_PROJECT_DATABASE_PASSWORD'] %>。
我好像做错了什么,但我想不出是什么。同样,我知道我可以手动完成,但我想让CI/CD管道自动部署。
如果任何人有任何想法,请分享。谢谢!
发布于 2022-02-26 08:53:05
通过从生产中删除username和password并将这些值保留在默认值中解决了这个问题:
default: &default
adapter: postgresql
encoding: unicode
host: db
username: user
password: password
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: Jenkins_project_development
production:
<<: *default
database: Jenkins_project_productionhttps://stackoverflow.com/questions/71266585
复制相似问题