アラート管理に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するポートを一つにしてみました。
こちらの元の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
参考資料