遇到一個小問題,我希望有人能指引我朝着正確的方向發展。進出口運行一個Rails + Postgres的多容器和他們開始了罰款,除了鐵軌顯示了這個在日誌中,當我試圖訪問負載均衡器的IP:Postgres問題 - Google容器引擎上的Ruby on Rails(Postgres)
PG::ConnectionBad (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"?):
我的兩個容器莢文件和我的database.yml是如下:
鋼軌POD
apiVersion: v1
kind: Pod
metadata:
name: cartelhouse
labels:
name: cartelhouse
spec:
containers:
- image: gcr.io/xyz/cartelhouse:v6
name: cartelhouse
env:
- name: POSTGRES_PASSWORD
# Change this - must match postgres.yaml password.
value: mypassword
- name: POSTGRES_USER
value: rails
ports:
- containerPort: 80
name: cartelhouse
volumeMounts:
# Name must match the volume name below.
- name: cartelhouse-persistent-storage
# Mount path within the container.
mountPath: /var/www/html
volumes:
- name: cartelhouse-persistent-storage
gcePersistentDisk:
# This GCE persistent disk must already exist.
pdName: rails-disk
fsType: ext4
POSTGRES POD
apiVersion: v1
kind: Pod
metadata:
name: postgres
labels:
name: postgres
spec:
containers:
- name: postgres
image: postgres
env:
- name: POSTGRES_PASSWORD
value: mypassword
- name: POSTGRES_USER
value: rails
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
ports:
- containerPort: 5432
name: postgres
volumeMounts:
- name: postgres-persistent-storage
mountPath: /var/lib/postgresql/data
volumes:
- name: postgres-persistent-storage
gcePersistentDisk:
# This disk must already exist.
pdName: postgres-disk
fsType: ext4
DATABASE.YML FILE
production:
<<: *default
adapter: postgresql
encoding: unicode
database: app_production
username: <%= ENV['PG_ENV_POSTGRES_USER'] %>
password: <%= ENV['PG_ENV_POSTGRES_PASSWORD'] %>
host: <%= ENV['PG_PORT_5432_TCP_ADDR'] %>
我假設它是一個鏈接問題,或者與我指定的PGDATA路徑有關?
感謝亞歷克斯,你的意思是將本地IP地址硬編碼爲數據庫配置?將試一試,但希望有更多的動態.. –
不,我的意思是配置您的Rails應用程序使用它的DNS名稱與數據庫交談。如果您爲postgres窗格創建服務,那麼您可以告訴Rails使用postgres服務的名稱連接到數據庫。現在看起來假設數據庫在同一臺機器上運行(因此它嘗試使用Unix域套接字)。 –