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?

keephq/keepをNginxを前に置いてdocker composeで起動する

Last updated at Posted at 2025-01-23

アラート管理にkeepを使いたかったので環境構築しました。

手元ではEKSで構築していてそちらはうまくいったのですが、docker compose版を起動しようとして、ドキュメントにある定義ファイルを見るとFront/Backend/Websocketでそれぞれのポートが必要でした。

services:
  keep-frontend:
    extends:
      file: docker-compose.common.yml
      service: keep-frontend-common
    image: us-central1-docker.pkg.dev/keephq/keep/keep-ui
    environment:
      - AUTH_TYPE=NO_AUTH
      - API_URL=http://keep-backend:8080
    volumes:
      - ./state:/state
    depends_on:
      - keep-backend

  keep-backend:
    extends:
      file: docker-compose.common.yml
      service: keep-backend-common
    image: us-central1-docker.pkg.dev/keephq/keep/keep-api
    environment:
      - AUTH_TYPE=NO_AUTH
    volumes:
      - ./state:/state

  keep-websocket-server:
    extends:
      file: docker-compose.common.yml
      service: keep-websocket-server-common

以下のkeepのK8s版のようにパスを分けて、Nginxを前に置く構成を取ってExposeするポートを一つにしてみました。

image.png

こちらの元のDockerの記事と同じように、sqliteのデータを保存するstateディレクトリを作成していおきます。

mkdir -p state
chown -R 999:999 state

Nginxの設定ファイルは以下のようにしています。(最小限構成です)

nginx.conf
server {
        server_name _ ;

        http2 on;

        listen 80;
        listen [::]:80;

        # Websocket
        location /websocket/ {
            proxy_http_version 1.1;
            proxy_set_header Upgrade upgrade;
            proxy_set_header Connection upgrade;

            rewrite ^/websocket(/|$)(.*) /$2 break;
            proxy_pass http://keep-websocket-server:6001;
        }

        # Backend
        location /backend/ {
            rewrite ^/backend(/|$)(.*) /$2 break;
            proxy_pass http://keep-backend:8080;
        }

        # Frontend
        location / {
            proxy_pass http://keep-frontend:3000;
        }
}

後はNginxの設定どおり、以下のような構成でdocker-compose定義を書き換えます。

起動することでNginxの 3000 ポートにアクセス可能です。

docker-compose.yaml
services:
  keep-frontend:
    image: us-central1-docker.pkg.dev/keephq/keep/keep-ui
    environment:
      - NEXTAUTH_SECRET=secret
      - PUSHER_HOST=/websocket
      - PUSHER_APP_KEY=keepappkey
      - AUTH_TYPE=NO_AUTH
    volumes:
      - ./state:/state
    depends_on:
      - keep-backend

  keep-backend:
    image: us-central1-docker.pkg.dev/keephq/keep/keep-api
    environment:
      - PORT=8080
      - SECRET_MANAGER_TYPE=FILE
      - SECRET_MANAGER_DIRECTORY=/state
      - DATABASE_CONNECTION_STRING=sqlite:////state/db.sqlite3?check_same_thread=False
      - PUSHER_APP_ID=1
      - PUSHER_APP_KEY=keepappkey
      - PUSHER_APP_SECRET=keepappsecret
      - PUSHER_HOST=keep-websocket-server
      - PUSHER_PORT=6001
      - USE_NGROK=false
      - AUTH_TYPE=NO_AUTH
    volumes:
      - ./state:/state

  keep-websocket-server:
    image: quay.io/soketi/soketi:1.4-16-debian
    environment:
      - SOKETI_USER_AUTHENTICATION_TIMEOUT=3000
      - SOKETI_DEFAULT_APP_ID=1
      - SOKETI_DEFAULT_APP_KEY=keepappkey
      - SOKETI_DEFAULT_APP_SECRET=keepappsecret

  keep-nginx:
      image: nginx:alpine
      ports:
        - "3000:80"
      depends_on:
        - keep-frontend
        - keep-backend
        - keep-websocket-server
      volumes:
        - ./nginx.conf:/etc/nginx/conf.d/default.conf:ro

最小限の構成にしているので必要に応じて以下などを参考に調整して使ってください。

特にbackendに以下のように KEEP_API_URL を指定するとWebhoook利用できるようになります。※ ホスト名は適当に変更してください。

KEEP_API_URL=http://localhost:3000/backend

参考資料

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?