0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ufw有効下でDockerコンテナからローカルに立てたPostgreSQLに接続

Posted at

概要

遊びで作ってる物をデプロイするにあたり、あまり運用にコストを掛けたくないのでVPSを借りて一台に全部ぶちこむ構成で作っていたのですが、単純なことに見事にハマりちらかして結構な時間が解けてしまったので備忘録です。

結論

私の環境ではufwを有効にしていたので、コンテナからのアクセスがufwに弾かれていて、ローカルのPostgreSQLへの接続ができていませんでした。ufwの許可ルールにdockerがデフォルトで使うアドレス範囲(172.16.0.0/12)からの接続を追加することで解決しました。
(もうすこし設定を絞ったほうが良いと思いますが、お遊びなのでヨシ!)

# ufw allow proto tcp from 172.16.0.0/12 to any port 5432

背景

こんな雰囲気のdocker-composeで、DBを参照するアプリが起動するようにアプリケーションを作成しました。

docker-compose.yml
version: '3'
services:
  app:
    build:
      context: .
      dockerfile: ./Dockerfile
    environment:
      - DATABASE_CLIENT=postgres
      - DATABASE_HOST=host.docker.internal
      - DATABASE_PORT=5432
      - DATABASE_USERNAME=dbuser
      - DATABASE_PASSWORD=dbpass
      - DATABASE_NAME=dbname
      - DATABASE_SCHEMA=public
    extra_hosts:
      - host.docker.internal:host-gateway
    command: sh -c 'yarn run start'
    restart: always

PostgreSQLの設定をコンテナからアクセスできるように変更、追加して、サービスを再起動しています。

/etc/postgresql/15/main/postgresql.conf
# ...略
listen_addresses = '*'                  # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
port = 5432                             # (change requires restart)
max_connections = 100                   # (change requires restart)
# 略...
/etc/postgresql/15/main/pg_hba.conf
# ...略
# IPv4 Docker container connections:
host    all             all             172.16.0.0/12           scram-sha-256

その後、意気揚々とdocker compose upするもDB接続エラーが出て、設定見直したりいろいろ試行錯誤するも解決せず。
最終的には、syslogを確認してufwが原因だったと気づくまで1.5日溶けました...
この記事がだれかの時間を救いますように...

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?