yosuke-43 / dog_app_old

1 stars 0 forks source link

デプロイ後の設定で、データベースの利用方法につまづいている #63

Open yosuke-43 opened 9 months ago

yosuke-43 commented 9 months ago
また、fly.ioのアプリ上からもデータベースが作成されていることは確認しています。
[![Image from Gyazo](https://i.gyazo.com/7968f02a9a49582efad5fc4af3449ee4.png)](https://gyazo.com/7968f02a9a49582efad5fc4af3449ee4)
[![Image from Gyazo](https://i.gyazo.com/6d22a8f540d76ae4bf744e778a85a4e9.png)](https://gyazo.com/6d22a8f540d76ae4bf744e778a85a4e9)

- 該当のソースコード
データの移行以前にそもそもpostgreSQLに接続できるかを調べました。
postgreSQLに接続できるかの確認をしたときのコマンド

yosuketokito@tokitouyousukenoMacBook-Air dog_app % psql -h dog-app-db.internal -p 5433 -U postgres -d dog_app psql: error: could not translate host name "dog-app-db.internal" to address: nodename nor servname provided, or not known


- エラーから考えられる原因
digコマンドを試してみた結果

yosuketokito@tokitouyousukenoMacBook-Air dog_app % dig dog-app-db.fly.dev

; <<>> DiG 9.10.6 <<>> dog-app-db.fly.dev ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42443 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;dog-app-db.fly.dev. IN A

;; AUTHORITY SECTION: fly.dev. 300 IN SOA ns1.flydns.net. ops.fly.io. 1708314580 86400 7200 604800 300

;; Query time: 30 msec ;; SERVER: 2001:a7ff:5f01::a#53(2001:a7ff:5f01::a) ;; WHEN: Mon Feb 19 12:51:07 JST 2024 ;; MSG SIZE rcvd: 107

yosuketokito@tokitouyousukenoMacBook-Air dog_app % dig dog-app-db.internal

; <<>> DiG 9.10.6 <<>> dog-app-db.internal ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 28552 ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1

;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 512 ;; QUESTION SECTION: ;dog-app-db.internal. IN A

;; AUTHORITY SECTION: . 86400 IN SOA a.root-servers.net. nstld.verisign-grs.com. 2024021801 1800 900 604800 86400

;; Query time: 19 msec ;; SERVER: 2001:a7ff:5f01::a#53(2001:a7ff:5f01::a) ;; WHEN: Mon Feb 19 13:02:01 JST 2024 ;; MSG SIZE rcvd: 123

yosuketokito@tokitouyousukenoMacBook-Air dog_app % psql "host=fdaa:6:b74b:0:1::2 port=5433 user=postgres dbname=dog-app-db sslmode=require"

psql: error: connection to server at "fdaa:6:b74b:0:1::2", port 5433 failed: Operation timed out Is the server running on that host and accepting TCP/IP connections?


- 試したこと
config/database.ymlファイルを以下に書き直してもう一度デプロイコマンドをした

production: adapter: postgresql encoding: unicode database: dog-app-db # データベース名を指定 username: postgres # ユーザー名を指定 password: FCGFcBEDWqgjrBm # パスワードを指定 host: dog-app-db.internal # ホスト名を指定 port: 5433 # ポート番号を指定 pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

kerochelo commented 9 months ago

@yosuke-43 flyioのdb情報はあっていますかね? postgresqlはデフォルトのポートが5432なので、その部分を再度確認していただいてもよろしいでしょうか?

kerochelo commented 9 months ago

あとflyioの環境変数を利用してpasswordは隠すようにしましょう!

yosuke-43 commented 9 months ago

@kerochelo

flyioのdb情報はあっていますかね?

最初にfly launchをした際のメモを残していたので、これで合ってると思います。

Postgres cluster dog-app-db created
  Username:    postgres
  Password:    FCGFcBEDWqgjrBm
  Hostname:    dog-app-db.internal
  Flycast:     fdaa:6:b74b:0:1::2
  Proxy port:  5432
  Postgres port:  5433
  Connection string: postgres://postgres:FCGFcBEDWqgjrBm@dog-app-db.flycast:5432

postgresqlはデフォルトのポートが5432なので、その部分を再度確認していただいてもよろしいでしょうか?

yosuketokito@tokitouyousukenoMacBook-Air dog_app % psql -h dog-app-db.internal -p 5432 -U postgres -d postgres

psql: error: could not translate host name "dog-app-db.internal" to address: nodename nor servname provided, or not known

5432に変更しても接続はできなかったです。

また、fly.ioのダッシュボードをもとに Image from Gyazo 下記のコマンドを実施しましたが、データベースに接続はできませんでした。

yosuketokito@tokitouyousukenoMacBook-Air dog_app % psql -h fdaa:6:b74b:0:1::2 -p 5432 -U postgres -d postgres

psql: error: connection to server at "fdaa:6:b74b:0:1::2", port 5432 failed: Operation timed out

あとflyioの環境変数を利用してpasswordは隠すようにしましょう!

config/database.yml

production:
  adapter: postgresql
  encoding: unicode
  database: dog-app-db  # データベース名を指定
  username: postgres  # ユーザー名を指定
  password: ENV['SECRET_KEY']  # パスワードを指定
  host: dog-app-db.internal  # ホスト名を指定
  port: 5432  # ポート番号を指定
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

編集しました

yosuke-43 commented 9 months ago

デプロイまでしていますが、一度アプリを削除してもう一度やり直した方がよろしいでしょうか?

yosuke-43 commented 9 months ago

今一旦fly.ioのダッシュボードからアプリとデータベースを削除しました。 再度最初からやってみます。

Tsuchiya2 commented 9 months ago

@kerochelo

デプロイまでしていますが、一度アプリを削除してもう一度やり直した方がよろしいでしょうか?

そうですね。一度外部に出てしまった情報は履歴を辿れば分かってしまうのでやり直した方がようかと思います。

別案としては、fly.io に拘らず他のデプロイ先(Heroku, etc)などでデプロイしても問題ないので検討してみてください。

(何かあればMattermostの方にメンションを付けて投稿してください。メンションが無いと気づけないです。)

kerochelo commented 9 months ago

↑ @yosuke-43