feat: add docker prod build stages and publish prod builds (#4)

This commit is contained in:
Warren 2023-09-15 21:34:14 -07:00 committed by GitHub
parent 914d49a2bc
commit 836924377e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
15 changed files with 77 additions and 44 deletions

View file

@ -1,6 +0,0 @@
---
'@hyperdx/api': minor
'@hyperdx/app': minor
---
feat: introduce usage-stats service

2
.env
View file

@ -1,2 +1,2 @@
IMAGE_NAME=ghcr.io/hyperdxio/hyperdx
IMAGE_VERSION=1.0.3
IMAGE_VERSION=1.1.0

View file

@ -42,11 +42,11 @@ ci-int:
.PHONY: build-and-push-ghcr
build-and-push-ghcr:
docker buildx build --platform ${BUILD_PLATFORMS} ./docker/hostmetrics -t ${IMAGE_NAME}:${LATEST_VERSION}-hostmetrics --target dev --push &
docker buildx build --platform ${BUILD_PLATFORMS} ./docker/ingestor -t ${IMAGE_NAME}:${LATEST_VERSION}-ingestor --target dev --push &
docker buildx build --platform ${BUILD_PLATFORMS} ./docker/otel-collector -t ${IMAGE_NAME}:${LATEST_VERSION}-otel-collector --target dev --push &
docker buildx build --platform ${BUILD_PLATFORMS} . -f ./packages/miner/Dockerfile -t ${IMAGE_NAME}:${LATEST_VERSION}-miner --target dev --push &
docker buildx build --platform ${BUILD_PLATFORMS} . -f ./packages/api/Dockerfile -t ${IMAGE_NAME}:${LATEST_VERSION}-api --target dev --push &
docker buildx build --platform ${BUILD_PLATFORMS} . -f ./packages/app/Dockerfile -t ${IMAGE_NAME}:${LATEST_VERSION}-app --target prod --push
docker buildx build --platform ${BUILD_PLATFORMS} ./docker/hostmetrics -t ${IMAGE_NAME}:${LATEST_VERSION}-hostmetrics --target prod --push &
docker buildx build --platform ${BUILD_PLATFORMS} ./docker/ingestor -t ${IMAGE_NAME}:${LATEST_VERSION}-ingestor --target prod --push &
docker buildx build --platform ${BUILD_PLATFORMS} ./docker/otel-collector -t ${IMAGE_NAME}:${LATEST_VERSION}-otel-collector --target prod --push &
docker buildx build --build-arg CODE_VERSION=${LATEST_VERSION} --platform ${BUILD_PLATFORMS} . -f ./packages/miner/Dockerfile -t ${IMAGE_NAME}:${LATEST_VERSION}-miner --target prod --push &
docker buildx build --build-arg CODE_VERSION=${LATEST_VERSION} --platform ${BUILD_PLATFORMS} . -f ./packages/api/Dockerfile -t ${IMAGE_NAME}:${LATEST_VERSION}-api --target prod --push &
docker buildx build --build-arg CODE_VERSION=${LATEST_VERSION} --platform ${BUILD_PLATFORMS} . -f ./packages/app/Dockerfile -t ${IMAGE_NAME}:${LATEST_VERSION}-app --target prod --push

View file

@ -9,8 +9,6 @@ services:
OTEL_EXPORTER_OTLP_ENDPOINT: http://otel-collector:4318
OTEL_LOG_LEVEL: ERROR
OTEL_SERVICE_NAME: hdx-oss-miner
volumes:
- ./packages/miner/src:/app/src
ports:
- 5123:5123
networks:
@ -18,8 +16,6 @@ services:
hostmetrics:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-hostmetrics
container_name: hdx-oss-hostmetrics
volumes:
- ./docker/hostmetrics/config.dev.yaml:/etc/otelcol-contrib/config.yaml
environment:
HYPERDX_API_KEY: ${HYPERDX_API_KEY}
OTEL_SERVICE_NAME: hostmetrics
@ -30,7 +26,6 @@ services:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-ingestor
container_name: hdx-oss-ingestor
volumes:
- ./docker/ingestor:/app
- .volumes/ingestor_data:/var/lib/vector
ports:
- 8002:8002 # http-generic
@ -63,8 +58,6 @@ services:
otel-collector:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-otel-collector
container_name: hdx-oss-otel-collector
volumes:
- ./docker/otel-collector/config.yaml:/etc/otelcol-contrib/config.yaml
ports:
- '13133:13133' # health_check extension
- '1888:1888' # pprof extension
@ -93,8 +86,6 @@ services:
PORT: 8001
REDIS_URL: redis://redis:6379
SERVER_URL: 'http://localhost:8000'
volumes:
- ./packages/api/src:/app/src
networks:
- internal
depends_on:
@ -104,8 +95,8 @@ services:
task-check-alerts:
image: ${IMAGE_NAME}:${IMAGE_VERSION}-api
container_name: hdx-oss-task-check-alerts
entrypoint: 'yarn'
command: 'dev:task check-alerts'
entrypoint: 'node'
command: './build/tasks/index.js check-alerts'
environment:
APP_TYPE: 'scheduled-task'
CLICKHOUSE_HOST: http://ch-server:8123
@ -124,8 +115,6 @@ services:
OTEL_EXPORTER_OTLP_ENDPOINT: 'http://otel-collector:4318'
OTEL_SERVICE_NAME: 'hdx-oss-task-check-alerts'
REDIS_URL: redis://redis:6379
volumes:
- ./packages/api/src:/app/src
restart: always
networks:
- internal
@ -161,8 +150,6 @@ services:
REDIS_URL: redis://redis:6379
SERVER_URL: 'http://localhost:8000'
USAGE_STATS_ENABLED: ${USAGE_STATS_ENABLED:-true}
volumes:
- ./packages/api/src:/app/src
networks:
- internal
depends_on:
@ -181,14 +168,6 @@ services:
NEXT_PUBLIC_HDX_SERVICE_NAME: 'hdx-oss-app'
NODE_ENV: development
PORT: 8080
volumes:
- ./packages/app/pages:/app/pages
- ./packages/app/public:/app/public
- ./packages/app/src:/app/src
- ./packages/app/styles:/app/styles
- ./packages/app/mdx.d.ts:/app/mdx.d.ts
- ./packages/app/next-env.d.ts:/app/next-env.d.ts
- ./packages/app/next.config.js:/app/next.config.js
networks:
- internal
depends_on:

View file

@ -6,3 +6,9 @@ FROM otel/opentelemetry-collector-contrib:0.83.0 AS base
FROM base as dev
COPY ./config.dev.yaml /etc/otelcol-contrib/config.yaml
## prod #############################################################################################
FROM base as prod
COPY ./config.dev.yaml /etc/otelcol-contrib/config.yaml

View file

@ -16,3 +16,10 @@ EXPOSE 8002 8686
ENTRYPOINT ["vector", "-c", "http-server.core.toml", "-c", "http-server.sinks.toml", "--require-healthy", "true"]
## prod #############################################################################################
FROM base as prod
EXPOSE 8002 8686
ENTRYPOINT ["vector", "-c", "http-server.core.toml", "-c", "http-server.sinks.toml", "--require-healthy", "true"]

View file

@ -2,9 +2,17 @@
FROM otel/opentelemetry-collector-contrib:0.83.0 AS base
## dev #############################################################################################
## dev ##############################################################################################
FROM base as dev
COPY ./config.yaml /etc/otelcol-contrib/config.yaml
EXPOSE 1888 4317 4318 55679 13133
## prod #############################################################################################
FROM base as prod
COPY ./config.yaml /etc/otelcol-contrib/config.yaml
EXPOSE 1888 4317 4318 55679 13133

View file

@ -1,6 +1,6 @@
{
"private": true,
"version": "1.0.3",
"version": "1.1.0",
"license": "MIT",
"workspaces": [
"packages/*"

View file

@ -0,0 +1,7 @@
# @hyperdx/api
## 1.1.0
### Minor Changes
- 914d49a: feat: introduce usage-stats service

View file

@ -16,3 +16,31 @@ EXPOSE 8000
ENTRYPOINT ["yarn"]
CMD ["dev"]
## builder #########################################################################################
FROM base AS builder
COPY ./packages/api/src ./src
RUN yarn run build
## prod ############################################################################################
FROM node:18.15.0-alpine AS prod
ARG CODE_VERSION
ENV CODE_VERSION=$CODE_VERSION
EXPOSE 8000
USER node
WORKDIR /app
COPY --chown=node:node --from=builder /app/build ./build
COPY --chown=node:node --from=base /app/node_modules ./node_modules
ENTRYPOINT ["node", "-r", "@hyperdx/node-opentelemetry/build/src/tracing", "./build/index.js"]

View file

@ -1,6 +1,6 @@
{
"name": "@hyperdx/api",
"version": "1.0.3",
"version": "1.1.0",
"license": "MIT",
"private": true,
"engines": {

View file

@ -1,5 +1,3 @@
import { version } from '../package.json';
const env = process.env;
export const NODE_ENV = env.NODE_ENV as string;
@ -8,7 +6,7 @@ export const APP_TYPE = env.APP_TYPE as 'api' | 'aggregator' | 'scheduled-task';
export const CLICKHOUSE_HOST = env.CLICKHOUSE_HOST as string;
export const CLICKHOUSE_PASSWORD = env.CLICKHOUSE_PASSWORD as string;
export const CLICKHOUSE_USER = env.CLICKHOUSE_USER as string;
export const CODE_VERSION = version;
export const CODE_VERSION = env.CODE_VERSION as string;
export const COOKIE_DOMAIN = env.COOKIE_DOMAIN as string; // prod ONLY
export const EXPRESS_SESSION_SECRET = env.EXPRESS_SESSION_SECRET as string;
export const FRONTEND_URL = env.FRONTEND_URL as string;

View file

@ -15,7 +15,6 @@
"noUnusedLocals": false,
"noUnusedParameters": false,
"outDir": "build",
"resolveJsonModule": true,
"skipLibCheck": false,
"sourceMap": true,
"strict": true,

View file

@ -0,0 +1,7 @@
# @hyperdx/app
## 1.1.0
### Minor Changes
- 914d49a: feat: introduce usage-stats service

View file

@ -1,6 +1,6 @@
{
"name": "@hyperdx/app",
"version": "1.0.3",
"version": "1.1.0",
"private": true,
"license": "MIT",
"engines": {