docker 踩坑筆記之 psql: could not connect to server
最近在用docker跑rails,也遇到了一些坑,這裏記錄一下。
首先build項目:
docker-compose build
然後就開始報錯了:
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
這裏報錯是說找不到 /var/run/postgresql/.s.PGSQL.5432 文件,但我本地運行是沒問題的。於是去找docker從入門到實踐這本書的docker rails 例子, 地址在這裏:發現我的database.yml
default: &default
adapter: postgresql
encoding: unicode`請輸入代碼`
# For details on connection pooling,www.97yingyuan.org see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
Rails 默認讀取的數據庫目標是 localhost ,我們需要手動指定容
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# http://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: postgres
host: db
這樣再運行docker-compose build
,成功build! 然後再跑起來docker-compose up
,悲劇的又報錯了:
ActiveRecord::NoDatabaseError (FATAL: database "heroku_app_development" does not exist
提示沒有創建heroku_app_development
數據庫,OK,那就創建一個:
sudo docker ps
#列出所有容器sudo docker exec -it [container ID] /bin/bash
#進入postgressudo su - postgres
#切換到postgres用戶,因為這個用戶有createdb權限ceratedb heroku_app_development
#heroku_app_development 創建完成!
再運行docker-compose up
,又報錯:
Migrations are pending. To resolve this issue, run:
bin/rails db:migrate RAILS_ENV=development
railser應該很熟悉,數據庫遷移,進入web容器:sudo docker exec -it [container ID] /bin/bash
#進入web容器rails db:migrate
#遷移成功!
docker 踩坑筆記之 psql: could not connect to server