docker-compose-dev.yaml (164 lines of code) (raw):
###################################################################
# This docker-compose file should only be used for local
# installations.
#
# docker-compose sets up all services to be served by nginx
# and exposes the following ports:
#
# - 8080 for BadgerDoc microservices through nginx
# - 5432 for PostgreSQL (the port can be changed in the .env
# file for local needs)
# - 8082 for Keycloak.
# - 8083 for BadgerDoc web
# - 9001 for minio
#
###################################################################
services:
nginx:
image: badgerdoc_nginx
container_name: badgerdoc_nginx
networks:
- badgerdoc
depends_on:
- badgerdoc-annotation
- badgerdoc-users
- badgerdoc-processing
- badgerdoc-jobs
- badgerdoc-assets
ports:
- "8080:8080"
# BadgerDoc dependencies
badgerdoc-minio:
image: "bitnami/minio:2023.3.13"
container_name: badgerdoc-minio
environment:
- MINIO_ROOT_USER=${S3_ACCESS_KEY}
- MINIO_ROOT_PASSWORD=${S3_SECRET_KEY}
- MINIO_DEFAULT_BUCKETS=${MINIO_DEFAULT_BUCKETS}
networks:
- badgerdoc
volumes:
- minio-data:/data
ports:
- 9000:9000
- 9001:9001
badgerdoc-postgresql:
image: postgres:13.4
container_name: badgerdoc-postgresql
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
ports:
- ${POSTGRES_PORT}:${POSTGRES_PORT}
restart: always
networks:
- badgerdoc
volumes:
- badgerdoc-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER}"]
interval: 10s
timeout: 5s
retries: 5
badgerdoc-keycloak:
image: badgerdoc_keycloak
container_name: badgerdoc-keycloak
ports:
- "8082:8080"
environment:
DB_VENDOR: POSTGRES
DB_ADDR: badgerdoc-postgresql
DB_DATABASE: ${POSTGRES_DB}
DB_USER: ${POSTGRES_USER}
DB_SCHEMA: public
DB_PASSWORD: ${POSTGRES_PASSWORD}
KEYCLOAK_USER: ${KEYCLOAK_USER}
KEYCLOAK_PASSWORD: ${KEYCLOAK_PASSWORD}
KEYCLOAK_LOGLEVEL: DEBUG
depends_on:
badgerdoc-postgresql:
condition: service_healthy
networks:
- badgerdoc
restart: on-failure
# BadgerDoc microservices
badgerdoc-annotation:
image: badgerdoc_annotation
container_name: annotation
env_file:
- .env
environment:
- ROOT_PATH=/annotation
networks:
- badgerdoc
depends_on:
badgerdoc-postgresql:
condition: service_healthy
badgerdoc-keycloak:
condition: service_started
badgerdoc-users:
image: badgerdoc_users
container_name: users
env_file:
- .env
environment:
- ROOT_PATH=/users
networks:
- badgerdoc
depends_on:
badgerdoc-postgresql:
condition: service_healthy
badgerdoc-keycloak:
condition: service_started
badgerdoc-processing:
image: badgerdoc_processing
container_name: processing
env_file:
- .env
environment:
- ROOT_PATH=/processing
networks:
- badgerdoc
depends_on:
badgerdoc-postgresql:
condition: service_healthy
badgerdoc-keycloak:
condition: service_started
badgerdoc-jobs:
image: badgerdoc_jobs
container_name: jobs
env_file:
- .env
environment:
- ROOT_PATH=/jobs
networks:
- badgerdoc
depends_on:
badgerdoc-postgresql:
condition: service_healthy
badgerdoc-keycloak:
condition: service_started
badgerdoc-assets:
image: badgerdoc_assets
container_name: assets
env_file:
- .env
environment:
- ROOT_PATH=/assets
networks:
- badgerdoc
depends_on:
badgerdoc-postgresql:
condition: service_healthy
badgerdoc-keycloak:
condition: service_started
badgerdoc-web:
image: badgerdoc_web
container_name: web
networks:
- badgerdoc
ports:
- 8083:3000
badgerdoc-taxonomy:
image: badgerdoc_taxonomy
container_name: taxonomy
env_file:
- .env
environment:
- ROOT_PATH=/taxonomy
networks:
- badgerdoc
depends_on:
badgerdoc-postgresql:
condition: service_healthy
restart: on-failure
# TBD: Gotenberg
networks:
badgerdoc:
driver: bridge
volumes:
badgerdoc-data: {}
minio-data: {}