rails 如何修改数据库的配置 ( config/database.yml 文件的各种内容, host, name, port 的含义)

该博客介绍了如何在Docker中配置PostgreSQL数据库,并将本地项目数据库迁移至Docker中的PostgreSQL。首先展示了database.yml文件的配置,包括adapter、encoding、pool、host、username、password和port等关键参数。接着,详细说明了docker-compose.yml文件的设置,特别是端口映射、容器名称、镜像选择和数据卷挂载。在确保数据库配置正确后,通过bundle exec rake db:create命令创建数据库。最后,展示了在Docker容器内检查数据库状态和角色的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本地运行的项目是在5432端口的postgres,看一下database.yml文件配置

default: &default
  adapter: postgresql
  encoding: utf8
  pool: 5
  host: localhost
  username: admin
  user: admin
  password: 88888888
  port: 5532

development:
  <<: *default
  database: blogs
test:
  <<: *default
  database: blogs_test
production:
  <<: *default
  database: blogs

文件中比较重要的是host username user  password port ,这些数据是必须匹配的,host是项目进行运行的名称,username是配置的postgres的名称,在设置docker的时候进行初始化的内容,忘记的就需要进行查看,第一次运行docker的时候必须要有的文件内容。

docker-compose.yml

posts: 本地端口:远程端口

continer_name 与本地运行的相一致

image也是需要一致
volumes 是本地存放docker postgres的地址,:var/lib/postgresql/data 是远程进行保存的地址

command: 是需要的命令

tail -f /dev/null让容器一直处于runing状态

version: '3' services:
  postgres14.3:
    container_name: "postgres14.3"
    image: postgres:14.3
    volumes:
      - /workspace/docker_folder2/postgres14.3:/var/lib/postgresql/data
    command: 'tail -F /dev/null'
      # command: 'postgres'
    ports:
      - "5532:5432"
    stdin_open: true
    tty: true
    environment:  #这些内容仅在第一次创建docker的时候有用
      - POSTGRES_DB=postgres
      - POSTGRES_USER=postgres
      - POSTGRES_PASSWORD=88888888

在postgres可以使用了之后,本地查看postgres已经存在了docker的postgres,那么进行其他项目的转移,尝试,配置之前的blog,数据库转移到docker的数据库中,配置文件database.yml

 数据库的名称不需要改变,只需要把数据库的user名称,port进行修改,密码进行统一,就可以了。

default: &default
  adapter: postgresql
  encoding: utf8
  pool: 5
  #host: localhost
  #username: admin
  #user: admin
  host: localhost
  username: postgres
  user:  postgres
  password: 88888888
  port: 5532

development:
  <<: *default
  database: blogs
test:
  <<: *default
  database: blogs_test
production:
  <<: *default
  database: blogs

配置好文件,进行数据库的创建,bundle exec rake db:create

然后就可以在 数据库看到本地的数据库了

也可以在docker进行查看,使用命令sudo docker ps

[sudo] password for linlin: 
CONTAINER ID   IMAGE           COMMAND                  CREATED          STATUS          PORTS                                       NAMES
7fea4e376000   postgres:14.3   "docker-entrypoint.s…"   31 seconds ago   Up 30 seconds   0.0.0.0:5532->5432/tcp, :::5532->5432/tcp   postgres14.3
11f55a91272d   ubuntu          "bash"                   25 minutes ago   Up 25 minutes                                               quizzical_wescoff
(failed reverse-i-search)`-it': lsof ^C:6379

sudo docker exec -it 7fea bash

root@7fea4e376000:/# pg
pg_amcheck         pgbench            pg_conftool        pg_ctlcluster      pg_isready         pg_recvlogical     pg_restorecluster  pg_updatedicts     pg_virtualenv
pg_archivecleanup  pg_buildext        pg_controldata     pg_dropcluster     pg_lsclusters      pg_renamecluster   pg_rewind          pg_upgrade         pg_waldump
pg_backupcluster   pg_checksums       pg_createcluster   pg_dump            pg_receivewal      pg_resetwal        pg_test_fsync      pg_upgradecluster  
pg_basebackup      pg_config          pg_ctl             pg_dumpall         pg_receivexlog     pg_restore         pg_test_timing     pg_verifybackup    
root@7fea4e376000:/# su postgres
postgres@7fea4e376000:/$ pg_ctl start
waiting for server to start....2022-06-02 02:40:07.070 UTC [25] LOG:  starting PostgreSQL 14.3 (Debian 14.3-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit
2022-06-02 02:40:07.070 UTC [25] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2022-06-02 02:40:07.070 UTC [25] LOG:  listening on IPv6 address "::", port 5432
2022-06-02 02:40:07.071 UTC [25] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2022-06-02 02:40:07.073 UTC [26] LOG:  database system was shut down at 2022-06-02 02:38:29 UTC
2022-06-02 02:40:07.076 UTC [25] LOG:  database system is ready to accept connections
 done
server started
postgres@7fea4e376000:/$ lsof -i:5432
bash: lsof: command not found
postgres@7fea4e376000:/$ psql
psql (14.3 (Debian 14.3-1.pgdg110+1))
Type "help" for help.

postgres=# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

postgres=# 
\q
postgres@7fea4e376000:/$ pg_ctl stop
2022-06-02 02:40:32.302 UTC [25] LOG:  received fast shutdown request
waiting for server to shut down....2022-06-02 02:40:32.304 UTC [25] LOG:  aborting any active transactions
2022-06-02 02:40:32.305 UTC [25] LOG:  background worker "logical replication launcher" (PID 32) exited with exit code 1
2022-06-02 02:40:32.305 UTC [27] LOG:  shutting down
2022-06-02 02:40:32.314 UTC [25] LOG:  database system is shut down
 done
server stopped

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值