mirror of
https://github.com/fluxerapp/fluxer.git
synced 2026-09-02 21:04:06 +03:00
395 lines
12 KiB
YAML
395 lines
12 KiB
YAML
name: fluxer-dev
|
|
|
|
services:
|
|
workspace:
|
|
build:
|
|
context: ..
|
|
dockerfile: .devcontainer/Dockerfile
|
|
command: sleep infinity
|
|
init: true
|
|
env_file:
|
|
- ../config/env/development.env
|
|
environment:
|
|
FLUXER_SEARCH_URL: http://elasticsearch:9200
|
|
FLUXER_SEARCH_USERNAME: elastic
|
|
FLUXER_SEARCH_PASSWORD: fluxer-dev-elasticsearch
|
|
FLUXER_POSTGRES_HOST: postgres
|
|
FLUXER_SELF_HOSTED: "true"
|
|
DOCKER_HOST: unix:///var/run/docker.sock
|
|
KUBECONFIG: /workspaces/fluxer/.fluxer/k8s/local-kubeconfig
|
|
volumes:
|
|
- ..:/workspaces/fluxer:cached
|
|
- type: volume
|
|
source: root-node-modules
|
|
target: /workspaces/fluxer/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-app-node-modules
|
|
target: /workspaces/fluxer/fluxer_app/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-desktop-node-modules
|
|
target: /workspaces/fluxer/fluxer_desktop/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-marketing-node-modules
|
|
target: /workspaces/fluxer/fluxer_marketing/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-admin-node-modules
|
|
target: /workspaces/fluxer/fluxer_admin/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-config-node-modules
|
|
target: /workspaces/fluxer/packages/config/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-constants-node-modules
|
|
target: /workspaces/fluxer/packages/constants/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-date-utils-node-modules
|
|
target: /workspaces/fluxer/packages/date_utils/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-errors-node-modules
|
|
target: /workspaces/fluxer/packages/errors/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-geo-utils-node-modules
|
|
target: /workspaces/fluxer/packages/geo_utils/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-hono-node-modules
|
|
target: /workspaces/fluxer/packages/hono/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-hono-types-node-modules
|
|
target: /workspaces/fluxer/packages/hono_types/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-i18n-node-modules
|
|
target: /workspaces/fluxer/packages/i18n/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-instance-bootstrap-node-modules
|
|
target: /workspaces/fluxer/packages/instance_bootstrap/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-ip-utils-node-modules
|
|
target: /workspaces/fluxer/packages/ip_utils/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-limits-node-modules
|
|
target: /workspaces/fluxer/packages/limits/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-logger-node-modules
|
|
target: /workspaces/fluxer/packages/logger/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-openapi-node-modules
|
|
target: /workspaces/fluxer/packages/openapi/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-schema-node-modules
|
|
target: /workspaces/fluxer/packages/schema/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: package-snowflake-node-modules
|
|
target: /workspaces/fluxer/packages/snowflake/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-cache-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/cache/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-captcha-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/captcha/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-cassandra-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/cassandra/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-elasticsearch-search-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/elasticsearch_search/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-email-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/email/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-geoip-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/geoip/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-http-client-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/http_client/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-initialization-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/initialization/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-kv-client-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/kv_client/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-locale-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/locale/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-media-proxy-utils-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/media_proxy_utils/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-mime-utils-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/mime_utils/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-nats-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/nats/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-rate-limit-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/rate_limit/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-sms-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/sms/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-virus-scan-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/virus_scan/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-api-worker-node-modules
|
|
target: /workspaces/fluxer/fluxer_api/pkgs/worker/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-app-list-utils-node-modules
|
|
target: /workspaces/fluxer/fluxer_app/pkgs/list_utils/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-app-livekit-client-node-modules
|
|
target: /workspaces/fluxer/fluxer_app/pkgs/livekit-client/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- type: volume
|
|
source: fluxer-app-number-utils-node-modules
|
|
target: /workspaces/fluxer/fluxer_app/pkgs/number_utils/node_modules
|
|
volume:
|
|
nocopy: true
|
|
- pnpm-store:/home/vscode/.local/share/pnpm/store
|
|
- cargo-registry:/home/vscode/.cargo/registry
|
|
- cargo-git:/home/vscode/.cargo/git
|
|
- rust-target:/workspaces/fluxer/target
|
|
- type: bind
|
|
source: ${FLUXER_DOCKER_SOCKET:-/var/run/docker.sock}
|
|
target: /var/run/docker.sock
|
|
ports:
|
|
- "8000:8000"
|
|
- "3000:3000"
|
|
- "8088:8088"
|
|
- "8080:8080"
|
|
- "8771:8771"
|
|
- "8082:8082"
|
|
- "3010:3010"
|
|
- "3020:3020"
|
|
- "8100-8125:8100-8125"
|
|
- "3900:8333"
|
|
- "8888:8888"
|
|
- "9333:9333"
|
|
- "9340:9340"
|
|
- "23646:23646"
|
|
depends_on:
|
|
- cassandra
|
|
- postgres
|
|
- valkey
|
|
- nats
|
|
- livekit
|
|
- elasticsearch
|
|
- mailpit
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
|
|
cassandra:
|
|
image: cassandra:5.0.8
|
|
environment:
|
|
CASSANDRA_CLUSTER_NAME: fluxer-dev
|
|
CASSANDRA_DC: datacenter1
|
|
CASSANDRA_ENDPOINT_SNITCH: GossipingPropertyFileSnitch
|
|
HEAP_NEWSIZE: 128M
|
|
MAX_HEAP_SIZE: 768M
|
|
volumes:
|
|
- cassandra-data:/var/lib/cassandra
|
|
ports:
|
|
- "9042:9042"
|
|
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
environment:
|
|
POSTGRES_DB: fluxer
|
|
POSTGRES_USER: fluxer
|
|
POSTGRES_PASSWORD: fluxer
|
|
volumes:
|
|
- postgres-data:/var/lib/postgresql/data
|
|
ports:
|
|
- "5432:5432"
|
|
|
|
valkey:
|
|
image: valkey/valkey:8.1.7-alpine
|
|
command: ["valkey-server", "--save", "", "--appendonly", "no"]
|
|
ports:
|
|
- "6379:6379"
|
|
|
|
nats:
|
|
image: nats:2.14.2-alpine
|
|
command: ["-js", "-sd", "/data", "-m", "8222"]
|
|
volumes:
|
|
- nats-data:/data
|
|
ports:
|
|
- "4222:4222"
|
|
- "8222:8222"
|
|
|
|
livekit:
|
|
image: livekit/livekit-server:v1.12.0
|
|
command: ["--config", "/etc/livekit.yaml", "--bind", "0.0.0.0"]
|
|
volumes:
|
|
- ./livekit.yaml:/etc/livekit.yaml:ro
|
|
ports:
|
|
- "7880:7880"
|
|
- "7881:7881"
|
|
- "7882-7892:7882-7892/udp"
|
|
|
|
elasticsearch:
|
|
image: docker.elastic.co/elasticsearch/elasticsearch:9.3.2
|
|
environment:
|
|
discovery.type: single-node
|
|
xpack.security.enabled: "true"
|
|
xpack.security.http.ssl.enabled: "false"
|
|
ELASTIC_PASSWORD: fluxer-dev-elasticsearch
|
|
ES_JAVA_OPTS: "-Xms512m -Xmx512m"
|
|
volumes:
|
|
- elasticsearch-data:/usr/share/elasticsearch/data
|
|
ports:
|
|
- "9200:9200"
|
|
|
|
meilisearch:
|
|
image: getmeili/meilisearch:v1.12
|
|
environment:
|
|
MEILI_NO_ANALYTICS: "true"
|
|
MEILI_MASTER_KEY: fluxer-dev-meilisearch
|
|
volumes:
|
|
- meilisearch-data:/meili_data
|
|
ports:
|
|
- "7700:7700"
|
|
|
|
mailpit:
|
|
image: axllent/mailpit:v1.30
|
|
environment:
|
|
MP_DATABASE: /data/mailpit.db
|
|
MP_MAX_MESSAGES: 5000
|
|
MP_SMTP_AUTH_ACCEPT_ANY: "1"
|
|
MP_SMTP_AUTH_ALLOW_INSECURE: "1"
|
|
MP_WEBROOT: devmail
|
|
volumes:
|
|
- mailpit-data:/data
|
|
|
|
volumes:
|
|
pnpm-store:
|
|
root-node-modules:
|
|
fluxer-api-node-modules:
|
|
fluxer-app-node-modules:
|
|
fluxer-desktop-node-modules:
|
|
fluxer-marketing-node-modules:
|
|
fluxer-admin-node-modules:
|
|
package-config-node-modules:
|
|
package-constants-node-modules:
|
|
package-date-utils-node-modules:
|
|
package-errors-node-modules:
|
|
package-geo-utils-node-modules:
|
|
package-hono-node-modules:
|
|
package-hono-types-node-modules:
|
|
package-i18n-node-modules:
|
|
package-instance-bootstrap-node-modules:
|
|
package-ip-utils-node-modules:
|
|
package-limits-node-modules:
|
|
package-logger-node-modules:
|
|
package-openapi-node-modules:
|
|
package-schema-node-modules:
|
|
package-snowflake-node-modules:
|
|
fluxer-api-cache-node-modules:
|
|
fluxer-api-captcha-node-modules:
|
|
fluxer-api-cassandra-node-modules:
|
|
fluxer-api-elasticsearch-search-node-modules:
|
|
fluxer-api-email-node-modules:
|
|
fluxer-api-geoip-node-modules:
|
|
fluxer-api-http-client-node-modules:
|
|
fluxer-api-initialization-node-modules:
|
|
fluxer-api-kv-client-node-modules:
|
|
fluxer-api-locale-node-modules:
|
|
fluxer-api-media-proxy-utils-node-modules:
|
|
fluxer-api-mime-utils-node-modules:
|
|
fluxer-api-nats-node-modules:
|
|
fluxer-api-rate-limit-node-modules:
|
|
fluxer-api-sms-node-modules:
|
|
fluxer-api-virus-scan-node-modules:
|
|
fluxer-api-worker-node-modules:
|
|
fluxer-app-list-utils-node-modules:
|
|
fluxer-app-livekit-client-node-modules:
|
|
fluxer-app-number-utils-node-modules:
|
|
cargo-registry:
|
|
cargo-git:
|
|
rust-target:
|
|
cassandra-data:
|
|
nats-data:
|
|
elasticsearch-data:
|
|
meilisearch-data:
|
|
mailpit-data:
|
|
postgres-data:
|