mirror of
https://github.com/suitenumerique/messages.git
synced 2026-08-17 21:25:41 +02:00
326 lines
7.7 KiB
YAML
326 lines
7.7 KiB
YAML
name: st-messages
|
|
|
|
services:
|
|
postgresql:
|
|
image: postgres:16.6
|
|
ports:
|
|
- "6434:5432"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready"]
|
|
interval: 1s
|
|
timeout: 2s
|
|
retries: 300
|
|
env_file:
|
|
- env.d/development/postgresql
|
|
|
|
redis:
|
|
image: redis:5
|
|
|
|
elasticsearch:
|
|
# Same version as Scalingo
|
|
image: docker.elastic.co/elasticsearch/elasticsearch:7.10.2
|
|
environment:
|
|
- discovery.type=single-node
|
|
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
|
|
- xpack.security.enabled=false
|
|
- http.cors.enabled=true
|
|
- "http.cors.allow-origin=/.*/"
|
|
ports:
|
|
- "9200:9200"
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:9200"]
|
|
interval: 1s
|
|
timeout: 5s
|
|
retries: 60
|
|
|
|
elasticsearch-ui:
|
|
image: cars10/elasticvue:latest
|
|
ports:
|
|
- "8093:8080"
|
|
environment:
|
|
- "ELASTICVUE_CLUSTERS=[{\"name\": \"dev cluster\", \"uri\": \"http://localhost:9200\"}]"
|
|
depends_on:
|
|
elasticsearch:
|
|
condition: service_healthy
|
|
|
|
mailcatcher:
|
|
image: maildev/maildev:2.2.1
|
|
ports:
|
|
- "1081:1080"
|
|
|
|
# minio:
|
|
# user: ${DOCKER_USER:-1000}
|
|
# image: minio/minio
|
|
# environment:
|
|
# - MINIO_ROOT_USER=st-messages
|
|
# - MINIO_ROOT_PASSWORD=password
|
|
# ports:
|
|
# - "9000:9000"
|
|
# - "9001:9001"
|
|
# healthcheck:
|
|
# test: ["CMD", "mc", "ready", "local"]
|
|
# interval: 1s
|
|
# timeout: 20s
|
|
# retries: 300
|
|
# entrypoint: ""
|
|
# command: minio server --console-address :9001 /data
|
|
# volumes:
|
|
# - ./data/media:/data
|
|
|
|
# createbuckets:
|
|
# image: minio/mc
|
|
# depends_on:
|
|
# minio:
|
|
# condition: service_healthy
|
|
# restart: true
|
|
# entrypoint: >
|
|
# sh -c "
|
|
# /usr/bin/mc alias set st-messages http://minio:9000 st-messages password && \
|
|
# /usr/bin/mc mb st-messages/st-messages-media-storage && \
|
|
# /usr/bin/mc version enable st-messages/st-messages-media-storage && \
|
|
# exit 0;"
|
|
|
|
backend-dev:
|
|
build:
|
|
context: src/backend
|
|
target: runtime-dev
|
|
args:
|
|
DOCKER_USER: ${DOCKER_USER:-1000}
|
|
user: ${DOCKER_USER:-1000}
|
|
image: st-messages:backend-development
|
|
environment:
|
|
- PYLINTHOME=/app/.pylint.d
|
|
- DJANGO_CONFIGURATION=Development
|
|
env_file:
|
|
- env.d/development/common
|
|
- env.d/development/backend
|
|
- env.d/development/postgresql
|
|
ports:
|
|
- "8071:8000"
|
|
volumes:
|
|
- ./src/backend:/app
|
|
- ./data/static:/data/static
|
|
depends_on:
|
|
postgresql:
|
|
condition: service_healthy
|
|
restart: true
|
|
redis:
|
|
condition: service_started
|
|
mta-out:
|
|
condition: service_started
|
|
elasticsearch:
|
|
condition: service_healthy
|
|
|
|
# createbuckets:
|
|
# condition: service_started
|
|
|
|
backend-poetry:
|
|
profiles:
|
|
- tools
|
|
volumes:
|
|
- ./src/backend:/app
|
|
build:
|
|
context: src/backend/
|
|
target: poetry
|
|
pull_policy: build
|
|
|
|
|
|
celery-dev:
|
|
build:
|
|
context: src/backend
|
|
target: runtime-dev
|
|
args:
|
|
DOCKER_USER: ${DOCKER_USER:-1000}
|
|
user: ${DOCKER_USER:-1000}
|
|
image: st-messages:backend-development
|
|
command: ["celery", "-A", "messages.celery_app", "worker", "-l", "DEBUG"]
|
|
environment:
|
|
- DJANGO_CONFIGURATION=Development
|
|
env_file:
|
|
- env.d/development/common
|
|
- env.d/development/backend
|
|
- env.d/development/postgresql
|
|
volumes:
|
|
- ./src/backend:/app
|
|
- ./data/static:/data/static
|
|
depends_on:
|
|
- backend-dev
|
|
|
|
celery-ui:
|
|
build:
|
|
context: src/backend
|
|
target: runtime-dev
|
|
args:
|
|
DOCKER_USER: ${DOCKER_USER:-1000}
|
|
user: ${DOCKER_USER:-1000}
|
|
depends_on:
|
|
- redis
|
|
environment:
|
|
- FLOWER_UNAUTHENTICATED_API=true
|
|
- DJANGO_CONFIGURATION=Development
|
|
env_file:
|
|
- env.d/development/common
|
|
- env.d/development/backend
|
|
- env.d/development/postgresql
|
|
volumes:
|
|
- ./src/backend:/app
|
|
ports:
|
|
- "5556:5556"
|
|
command: celery -A messages.celery_app flower --port=5556
|
|
|
|
# app:
|
|
# build:
|
|
# context: .
|
|
# target: backend-production
|
|
# args:
|
|
# DOCKER_USER: ${DOCKER_USER:-1000}
|
|
# user: ${DOCKER_USER:-1000}
|
|
# image: st-messages:backend-production
|
|
# environment:
|
|
# - DJANGO_CONFIGURATION=Production
|
|
# env_file:
|
|
# - env.d/development/common
|
|
# - env.d/development/backend
|
|
# - env.d/development/postgresql
|
|
# depends_on:
|
|
# postgresql:
|
|
# condition: service_healthy
|
|
# restart: true
|
|
# redis:
|
|
# condition: service_started
|
|
# #minio:
|
|
# # condition: service_started
|
|
|
|
nginx:
|
|
image: nginx:1.25
|
|
ports:
|
|
- "8083:8083"
|
|
volumes:
|
|
- ./docker/files/development/etc/nginx/conf.d:/etc/nginx/conf.d:ro
|
|
depends_on:
|
|
- keycloak
|
|
- backend-dev
|
|
- mta-in
|
|
- mta-out
|
|
|
|
frontend-dev:
|
|
user: "${DOCKER_USER:-1000}"
|
|
build:
|
|
context: .
|
|
dockerfile: ./src/frontend/Dockerfile.dev
|
|
environment:
|
|
- NEXT_PUBLIC_API_ORIGIN=http://localhost:8071
|
|
- NEXT_PUBLIC_S3_DOMAIN_REPLACE=http://localhost:9000
|
|
image: st-messages:frontend-development
|
|
command: ["npm", "run", "dev"]
|
|
volumes:
|
|
- ./src/frontend/:/home/frontend/
|
|
ports:
|
|
- "3000:3000"
|
|
|
|
frontend-tools:
|
|
user: "${DOCKER_USER:-1000}"
|
|
profiles:
|
|
- frontend-tools
|
|
build:
|
|
dockerfile: ./src/frontend/Dockerfile.dev
|
|
volumes:
|
|
- ./src/backend/core/api/openapi.json:/home/backend/core/api/openapi.json
|
|
- ./src/frontend/:/home/frontend/
|
|
|
|
# frontend:
|
|
# user: "${DOCKER_USER:-1000}"
|
|
# build:
|
|
# context: .
|
|
# dockerfile: ./src/frontend/Dockerfile
|
|
# target: frontend-production
|
|
# args:
|
|
# API_ORIGIN: "http://localhost:8071"
|
|
# S3_DOMAIN_REPLACE: "http://localhost:9000"
|
|
# image: st-messages:frontend-production
|
|
# ports:
|
|
# - "3001:3000"
|
|
|
|
crowdin:
|
|
image: crowdin/cli:3.16.0
|
|
volumes:
|
|
- ".:/app"
|
|
env_file:
|
|
- env.d/development/crowdin
|
|
user: "${DOCKER_USER:-1000}"
|
|
working_dir: /app
|
|
|
|
# node:
|
|
# image: node:22
|
|
# user: "${DOCKER_USER:-1000}"
|
|
# environment:
|
|
# HOME: /tmp
|
|
# volumes:
|
|
# - ".:/app"
|
|
|
|
mta-in:
|
|
image: mta-in:latest
|
|
build:
|
|
context: src/mta-in/postfix
|
|
dockerfile: Dockerfile
|
|
env_file:
|
|
- env.d/development/common
|
|
- env.d/development/mta-in
|
|
ports:
|
|
- "8025:25"
|
|
depends_on:
|
|
- backend-dev
|
|
|
|
mta-out:
|
|
image: mta-out:latest
|
|
build:
|
|
context: src/mta-out/postfix
|
|
dockerfile: Dockerfile
|
|
env_file:
|
|
- env.d/development/mta-out
|
|
ports:
|
|
- "8587:587"
|
|
depends_on:
|
|
mailcatcher:
|
|
condition: service_started
|
|
|
|
kc_postgresql:
|
|
image: postgres:16.6
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready"]
|
|
interval: 1s
|
|
timeout: 2s
|
|
retries: 300
|
|
ports:
|
|
- "6433:5432"
|
|
env_file:
|
|
- env.d/development/kc_postgresql
|
|
|
|
keycloak:
|
|
image: quay.io/keycloak/keycloak:20.0.1
|
|
volumes:
|
|
- ./docker/auth/realm.json:/opt/keycloak/data/import/realm.json
|
|
command:
|
|
- start-dev
|
|
- --features=preview
|
|
- --import-realm
|
|
- --proxy=edge
|
|
- --hostname-url=http://localhost:8083
|
|
- --hostname-admin-url=http://localhost:8083/
|
|
- --hostname-strict=false
|
|
- --hostname-strict-https=false
|
|
environment:
|
|
KEYCLOAK_ADMIN: admin
|
|
KEYCLOAK_ADMIN_PASSWORD: admin
|
|
KC_DB: postgres
|
|
KC_DB_URL_HOST: kc_postgresql
|
|
KC_DB_URL_DATABASE: keycloak
|
|
KC_DB_PASSWORD: pass
|
|
KC_DB_USERNAME: user
|
|
KC_DB_SCHEMA: public
|
|
PROXY_ADDRESS_FORWARDING: "true"
|
|
ports:
|
|
- "8080:8080"
|
|
depends_on:
|
|
- kc_postgresql
|