diff --git a/.env.docker b/.env.docker deleted file mode 100644 index f99b213..0000000 --- a/.env.docker +++ /dev/null @@ -1,3 +0,0 @@ -DTTMR_OTLP_ENDPOINT=172.17.0.1:4317 -DTTMR_DATABASE_URL=postgres://postgres:postgres@172.17.0.1:5432/postgres?sslmode=disable&timezone=utc -DTTMR_JWT_SECRET=V*$#Jt9OlYW0gEB6PyUU$qLYbJ^NC7LZ diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..1f2d345 --- /dev/null +++ b/.env.example @@ -0,0 +1,17 @@ +# PostgreSQL Config +POSTGRES_USER=dttmr_user +POSTGRES_PASSWORD=super_secret_db_password +POSTGRES_DB=dttmr_db + +# App Config +DTTMR_DATABASE_URL=postgres://dttmr_user:super_secret_db_password@postgres:5432/dttmr_db?sslmode=disable&timezone=utc +DTTMR_OTLP_ENDPOINT=otel-collector:4317 +DTTMR_ENVIRONMENT=production +DTTMR_JWT_SECRET=super_secret_jwt_key +DTTMR_PORT=8080 + +# Bootstrap Admin +ADMIN_EMAIL=admin@example.com +ADMIN_USERNAME=admin +ADMIN_PASSWORD=changeme + diff --git a/Dockerfile b/Dockerfile index 8bb6995..f806404 100644 --- a/Dockerfile +++ b/Dockerfile @@ -10,6 +10,8 @@ RUN go mod download COPY "./internal" "./internal" COPY "./cmd" "./cmd" COPY "Makefile" "./Makefile" +# So make can fetch tag and commit +COPY "./.git" "./.git" RUN make build diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..db4d8fb --- /dev/null +++ b/compose.yaml @@ -0,0 +1,48 @@ +services: + postgres: + image: postgres:16-alpine + container_name: dttmr-postgres + restart: unless-stopped + env_file: + - .env + volumes: + - /srv/dttmr-api/postgresql:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 5 + + otel-collector: + image: otel/opentelemetry-collector:latest + container_name: dttmr-otel + restart: unless-stopped + command: ["--config=/etc/otelcol/config.yaml"] + volumes: + - ./docker/otel-config.yaml:/etc/otelcol/config.yaml + ports: + - "4317:4317" + + bootstrap: + build: . + container_name: dttmr-bootstrap + env_file: + - .env + command: ["bootstrap", "--email=${ADMIN_EMAIL}", "--name=${ADMIN_USERNAME}", "--password=${ADMIN_PASSWORD}"] + depends_on: + postgres: + condition: service_healthy + + api: + build: . + container_name: dttmr-api + restart: unless-stopped + env_file: + - .env + ports: + - "8080:8080" + depends_on: + otel-collector: + condition: service_started + bootstrap: + condition: service_completed_successfully diff --git a/docker/compose.yml b/docker/compose.yml deleted file mode 100644 index 3afd106..0000000 --- a/docker/compose.yml +++ /dev/null @@ -1,33 +0,0 @@ -services: - otel-collector: - image: otel/opentelemetry-collector:latest - command: ["--config=/etc/otel-collector-config.yaml"] - volumes: - - ./otel-collector-config.yaml:/etc/otel-collector-config.yaml - ports: - - "4317:4317" - - jaeger: - image: jaegertracing/all-in-one:latest - environment: - - COLLECTOR_OTLP_ENABLED=true - ports: - - "16686:16686" - - prometheus: - image: prom/prometheus:latest - volumes: - - ./prometheus.yml:/etc/prometheus/prometheus.yml - ports: - - "9090:9090" - - postgres: - image: postgres:latest - volumes: - - ./postgresql-data:/var/lib/postgresql/data - ports: - - "15432:5432" - environment: - - POSTGRES_USER=postgres - - POSTGRES_PASSWORD=postgres - - POSTGRES_DB=dttmr diff --git a/docker/otel-collector-config.yaml b/docker/otel-collector-config.yaml deleted file mode 100644 index 3c9d71b..0000000 --- a/docker/otel-collector-config.yaml +++ /dev/null @@ -1,23 +0,0 @@ -receivers: - otlp: - protocols: - grpc: - endpoint: 0.0.0.0:4317 - -exporters: - otlp/jaeger: - endpoint: jaeger:4317 - tls: - insecure: true - - prometheus: - endpoint: 0.0.0.0:8889 - -service: - pipelines: - traces: - receivers: [otlp] - exporters: [otlp/jaeger] - metrics: - receivers: [otlp] - exporters: [prometheus] diff --git a/docker/otel-config.yaml b/docker/otel-config.yaml new file mode 100644 index 0000000..e0331ff --- /dev/null +++ b/docker/otel-config.yaml @@ -0,0 +1,15 @@ +receivers: + otlp: + protocols: + grpc: + endpoint: 0.0.0.0:4317 + +exporters: + debug: + verbosity: basic + +service: + pipelines: + traces: + receivers: [otlp] + exporters: [debug] diff --git a/docker/prometheus.yml b/docker/prometheus.yml deleted file mode 100644 index 44b9500..0000000 --- a/docker/prometheus.yml +++ /dev/null @@ -1,7 +0,0 @@ -global: - scrape_interval: 5s - -scrape_configs: - - job_name: 'otel-collector' - static_configs: - - targets: ['otel-collector:8889']