services: postgresql: image: postgres:16 platform: linux/amd64 env_file: - env.d/development/postgresql ports: - "15432:5432" healthcheck: test: [ "CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}" ] interval: 1s timeout: 2s retries: 300 redis: image: redis:5 maildev: image: maildev/maildev:latest ports: - "1081:1080" app-dev: build: context: . target: backend-development args: DOCKER_USER: ${DOCKER_USER:-1000} user: ${DOCKER_USER:-1000} image: people:backend-development pull_policy: never environment: - PYLINTHOME=/app/.pylint.d - DJANGO_CONFIGURATION=Development env_file: - env.d/development/common - env.d/development/france - env.d/development/postgresql ports: - "8071:8000" volumes: - ./src/backend:/app - ./data/media:/data/media - ./data/static:/data/static depends_on: postgresql: condition: service_healthy restart: true maildev: condition: service_started redis: condition: service_started frontend-dev: user: "${DOCKER_USER:-1000}" build: context: . dockerfile: ./src/frontend/Dockerfile target: frontend-dev image: people:frontend-development pull_policy: never volumes: - ./src/frontend:/home/frontend - /home/frontend/node_modules - /home/frontend/apps/desk/node_modules ports: - "3000:3000" app: build: context: . target: backend-production args: DOCKER_USER: ${DOCKER_USER:-1000} user: ${DOCKER_USER:-1000} image: people:backend-production environment: - DJANGO_CONFIGURATION=Development env_file: - env.d/development/common - env.d/development/france - env.d/development/postgresql ports: - "8071:8000" volumes: - ./data/media:/data/media depends_on: postgresql: condition: service_healthy restart: true redis: condition: service_started frontend: user: "${DOCKER_USER:-1000}" build: context: . dockerfile: ./src/frontend/Dockerfile target: frontend-production args: API_ORIGIN: "http://localhost:8071" image: people:frontend-production pull_policy: build ports: - "3000:3000" celery-dev: user: ${DOCKER_USER:-1000} image: people:backend-development command: ["celery", "-A", "people.celery_app", "worker", "-l", "DEBUG"] environment: - DJANGO_CONFIGURATION=Development env_file: - env.d/development/common - env.d/development/postgresql volumes: - ./src/backend:/app - ./data/media:/data/media - ./data/static:/data/static depends_on: postgresql: condition: service_healthy restart: true app-dev: condition: service_started celery-beat-dev: user: ${DOCKER_USER:-1000} image: people:backend-development command: ["celery", "-A", "people.celery_app", "beat", "-l", "DEBUG"] environment: - DJANGO_CONFIGURATION=Development env_file: - env.d/development/common - env.d/development/postgresql volumes: - ./src/backend:/app - ./data/media:/data/media - ./data/static:/data/static depends_on: postgresql: condition: service_healthy restart: true celery: user: ${DOCKER_USER:-1000} image: people:backend-production command: ["celery", "-A", "people.celery_app", "worker", "-l", "INFO"] environment: - DJANGO_CONFIGURATION=Demo env_file: - env.d/development/common - env.d/development/postgresql depends_on: postgresql: condition: service_healthy restart: true app: condition: service_started celery-beat: user: ${DOCKER_USER:-1000} image: people:backend-production command: ["celery", "-A", "people.celery_app", "beat", "-l", "INFO"] environment: - DJANGO_CONFIGURATION=Demo env_file: - env.d/development/common - env.d/development/postgresql volumes: - ./src/backend:/app - ./data/media:/data/media - ./data/static:/data/static depends_on: postgresql: condition: service_healthy restart: true nginx: image: nginx:1.25 ports: - "8083:8083" volumes: - ./docker/files/etc/nginx/conf.d:/etc/nginx/conf.d:ro depends_on: keycloak: condition: service_healthy restart: true crowdin: image: crowdin/cli:4.6.1 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" kc_postgresql: image: postgres:14.3 ports: - "5433:5432" env_file: - env.d/development/kc_postgresql healthcheck: test: [ "CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}" ] interval: 1s timeout: 2s retries: 300 keycloak: image: quay.io/keycloak/keycloak:20.0.1 volumes: - ./docker/auth/realm.json:/opt/keycloak/data/import/realm.json extra_hosts: - "host.docker.internal:host-gateway" 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 - --health-enabled=true - --metrics-enabled=true 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: people KC_DB_SCHEMA: public PROXY_ADDRESS_FORWARDING: 'true' healthcheck: test: [ "CMD", "curl", "--head", "-fsS", "http://localhost:8080/health/ready" ] interval: 1s timeout: 2s retries: 300 ports: - "8080:8080" depends_on: kc_postgresql: condition: service_healthy restart: true dimail: entrypoint: /opt/dimail-api/start-dev.sh image: registry.mim-libre.fr/dimail/dimail-api:v0.5.2 pull_policy: always environment: DIMAIL_MODE: FAKE DIMAIL_JWT_SECRET: fake_jwt_secret ports: - "8001:8000" flower-dev: user: ${DOCKER_USER:-1000} image: people:backend-development command: ["celery", "-A", "people.celery_app", "flower", "--port=5555"] environment: - DJANGO_CONFIGURATION=Development env_file: - env.d/development/common - env.d/development/postgresql ports: - "5555:5555" volumes: - ./src/backend:/app depends_on: - celery-dev - redis