diff --git a/Makefile b/Makefile index a3e155f53..6b7921c8b 100644 --- a/Makefile +++ b/Makefile @@ -39,6 +39,14 @@ dev-int: ci-int: docker compose -p int -f ./docker-compose.ci.yml run --rm api ci:int +.PHONY: build +build: + docker buildx build ./docker/hostmetrics -t ${IMAGE_NAME}:${LATEST_VERSION}-hostmetrics --target prod & + docker buildx build ./docker/ingestor -t ${IMAGE_NAME}:${LATEST_VERSION}-ingestor --target prod & + docker buildx build ./docker/otel-collector -t ${IMAGE_NAME}:${LATEST_VERSION}-otel-collector --target prod & + docker buildx build --build-arg CODE_VERSION=${LATEST_VERSION} . -f ./packages/miner/Dockerfile -t ${IMAGE_NAME}:${LATEST_VERSION}-miner --target prod & + docker buildx build --build-arg CODE_VERSION=${LATEST_VERSION} . -f ./packages/api/Dockerfile -t ${IMAGE_NAME}:${LATEST_VERSION}-api --target prod & + docker buildx build --build-arg NEXT_PUBLIC_API_SERVER_URL='/api' --build-arg CODE_VERSION=${LATEST_VERSION} . -f ./packages/app/Dockerfile -t ${IMAGE_NAME}:${LATEST_VERSION}-app --target prod .PHONY: build-and-push-ghcr build-and-push-ghcr: diff --git a/docker-compose.yml b/docker-compose.yml index 29d60a640..c140a0386 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,19 @@ version: '3' services: + traefik: + image: 'traefik:v2.10' + command: + - '--log.level=DEBUG' + - '--providers.docker=true' + - '--providers.docker.exposedbydefault=false' + - '--entrypoints.web.address=:80' + ports: + - '80:80' + networks: + - internal + volumes: + - '/var/run/docker.sock:/var/run/docker.sock:ro' + miner: image: ${IMAGE_NAME}:${IMAGE_VERSION}-miner container_name: hdx-oss-miner @@ -80,7 +94,7 @@ services: CLICKHOUSE_HOST: http://ch-server:8123 CLICKHOUSE_PASSWORD: aggregator CLICKHOUSE_USER: aggregator - FRONTEND_URL: 'http://localhost:8080' # need to be localhost (CORS) + FRONTEND_URL: 'http://${HOST:-hyperdx.localhost}' MONGO_URI: 'mongodb://db:27017/hyperdx' NODE_ENV: development PORT: 8001 @@ -103,7 +117,7 @@ services: CLICKHOUSE_LOG_LEVEL: trace CLICKHOUSE_PASSWORD: worker CLICKHOUSE_USER: worker - FRONTEND_URL: 'http://localhost:8080' # need to be localhost (CORS) + FRONTEND_URL: 'http://${HOST:-hyperdx.localhost}' HDX_NODE_ADVANCED_NETWORK_CAPTURE: 1 HDX_NODE_BETA_MODE: 0 HDX_NODE_CONSOLE_CAPTURE: 1 @@ -135,7 +149,7 @@ services: CLICKHOUSE_PASSWORD: api CLICKHOUSE_USER: api EXPRESS_SESSION_SECRET: 'hyperdx is cool 👋' - FRONTEND_URL: 'http://localhost:8080' # need to be localhost (CORS) + FRONTEND_URL: 'http://${HOST:-hyperdx.localhost}' HDX_NODE_ADVANCED_NETWORK_CAPTURE: 1 HDX_NODE_BETA_MODE: 1 HDX_NODE_CONSOLE_CAPTURE: 1 @@ -148,7 +162,7 @@ services: OTEL_SERVICE_NAME: 'hdx-oss-api' PORT: 8000 REDIS_URL: redis://redis:6379 - SERVER_URL: 'http://localhost:8000' + SERVER_URL: 'http://${HOST:-hyperdx.localhost}/api' USAGE_STATS_ENABLED: ${USAGE_STATS_ENABLED:-true} networks: - internal @@ -156,13 +170,22 @@ services: - ch-server - db - redis + labels: + - 'traefik.enable=true' + - 'traefik.http.routers.api.rule=Host(`${HOST:-hyperdx.localhost}`) && + PathPrefix(`/api/`)' + - 'traefik.http.routers.api.entrypoints=web' + - 'traefik.http.routers.api.middlewares=api-stripprefix' + - 'traefik.http.middlewares.api-stripprefix.stripprefix.prefixes=/api' + - 'traefik.http.services.api.loadbalancer.server.port=8000' + app: image: ${IMAGE_NAME}:${IMAGE_VERSION}-app container_name: hdx-oss-app ports: - 8080:8080 environment: - NEXT_PUBLIC_API_SERVER_URL: 'http://localhost:8000' # need to be localhost (CORS) + NEXT_PUBLIC_API_SERVER_URL: '/api' NEXT_PUBLIC_HDX_API_KEY: ${HYPERDX_API_KEY} NEXT_PUBLIC_HDX_COLLECTOR_URL: 'http://localhost:4318' NEXT_PUBLIC_HDX_SERVICE_NAME: 'hdx-oss-app' @@ -172,6 +195,12 @@ services: - internal depends_on: - api + labels: + - 'traefik.enable=true' + - 'traefik.http.routers.app.rule=Host(`${HOST:-hyperdx.localhost}`)' + - 'traefik.http.routers.app.entrypoints=web' + - 'traefik.http.services.app.loadbalancer.server.port=8080' + ch-server: image: clickhouse/clickhouse-server:23.7.1-alpine container_name: hdx-oss-ch-server