Files
buzz/docker-compose.yml
T

197 lines
4.4 KiB
YAML

services:
mysql:
image: mysql:8.0
container_name: sprout-mysql
environment:
MYSQL_ROOT_PASSWORD: sprout_dev
MYSQL_DATABASE: sprout
MYSQL_USER: sprout
MYSQL_PASSWORD: sprout_dev
ports:
- "3306:3306"
volumes:
- mysql-data:/var/lib/mysql
networks:
- sprout-net
healthcheck:
test: ["CMD-SHELL", "mysqladmin ping -h localhost -u root -psprout_dev"]
interval: 5s
timeout: 5s
retries: 10
start_period: 10s
deploy:
resources:
limits:
memory: 512m
labels:
com.sprout.service: "mysql"
com.sprout.env: "dev"
restart: unless-stopped
redis:
image: redis:7-alpine
container_name: sprout-redis
ports:
- "6379:6379"
networks:
- sprout-net
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 3s
retries: 10
start_period: 5s
deploy:
resources:
limits:
memory: 128m
labels:
com.sprout.service: "redis"
com.sprout.env: "dev"
restart: unless-stopped
typesense:
image: typesense/typesense:27.1
container_name: sprout-typesense
environment:
TYPESENSE_DATA_DIR: /data
TYPESENSE_API_KEY: sprout_dev_key
TYPESENSE_ENABLE_CORS: "true"
ports:
- "8108:8108"
volumes:
- typesense-data:/data
networks:
- sprout-net
healthcheck:
test: ["CMD-SHELL", "ls /proc/1/exe > /dev/null 2>&1 && kill -0 1 2>/dev/null || exit 1"]
interval: 10s
timeout: 5s
retries: 12
start_period: 15s
deploy:
resources:
limits:
memory: 256m
labels:
com.sprout.service: "typesense"
com.sprout.env: "dev"
restart: unless-stopped
adminer:
image: adminer:latest
container_name: sprout-adminer
ports:
- "8082:8080"
networks:
- sprout-net
depends_on:
mysql:
condition: service_healthy
environment:
ADMINER_DEFAULT_SERVER: mysql
deploy:
resources:
limits:
memory: 64m
labels:
com.sprout.service: "adminer"
com.sprout.env: "dev"
restart: unless-stopped
keycloak:
image: quay.io/keycloak/keycloak:26.0
container_name: sprout-keycloak
command: start-dev --http-port=8080
environment:
KC_DB: dev-mem
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
ports:
- "8180:8080"
networks:
- sprout-net
healthcheck:
test: ["CMD-SHELL", "exec 3<>/dev/tcp/localhost/8080 && echo -e 'GET /health/ready HTTP/1.1\\r\\nHost: localhost\\r\\nConnection: close\\r\\n\\r\\n' >&3 && cat <&3 | grep -q '200 OK'"]
interval: 10s
timeout: 5s
retries: 15
start_period: 30s
deploy:
resources:
limits:
memory: 512m
labels:
com.sprout.service: "keycloak"
com.sprout.env: "dev"
restart: unless-stopped
minio:
image: minio/minio:latest
container_name: sprout-minio
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: sprout_dev
MINIO_ROOT_PASSWORD: sprout_dev_secret
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio-data:/data
networks:
- sprout-net
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
interval: 5s
timeout: 5s
retries: 10
start_period: 10s
deploy:
resources:
limits:
memory: 256m
labels:
com.sprout.service: "minio"
com.sprout.env: "dev"
restart: unless-stopped
minio-init:
image: minio/mc:latest
container_name: sprout-minio-init
depends_on:
minio:
condition: service_healthy
networks:
- sprout-net
entrypoint: >
/bin/sh -c "
mc alias set local http://minio:9000 sprout_dev sprout_dev_secret &&
mc mb --ignore-existing local/sprout-media &&
mc anonymous set none local/sprout-media
"
labels:
com.sprout.service: "minio-init"
com.sprout.env: "dev"
restart: "no"
volumes:
mysql-data:
name: sprout-mysql-data
labels:
com.sprout.volume: "mysql"
typesense-data:
name: sprout-typesense-data
labels:
com.sprout.volume: "typesense"
minio-data:
name: sprout-minio-data
labels:
com.sprout.volume: "minio"
networks:
sprout-net:
name: sprout-net
driver: bridge
labels:
com.sprout.network: "dev"