version: "3.8"
services:
  hydra-sql:
    container_name: hydra-sql
    build:
      context: .
      dockerfile: ./misc/images/hydra-sql-standalone/Dockerfile
      args:
        - HTTP_PROXY=${HTTP_PROXY}
        - HTTPS_PROXY=${HTTPS_PROXY}
        - http_proxy=${http_proxy}
        - https_proxy=${https_proxy}
    ports:
      - 8082:8071
    volumes:
        - .:/app
    tmpfs:
      - /var/www/var/logs:uid=${FIXUID:-1000},gid=${FIXGID:-1000}
      - /var/www/var/cache:uid=${FIXUID:-1000},gid=${FIXGID:-1000}
      - /var/www/public/build:uid=${FIXUID:-1000},gid=${FIXGID:-1000}
      - /tmp
    links:
      - hydra
    depends_on:
      - redis
    extra_hosts:
      - "localhost:127.0.0.1"
      - "localhost:host-gateway"
      - "host.docker.internal:host-gateway"
    environment:
      - APP_ENV=dev
      - PHP_FPM_MEMORY_LIMIT=128m
      - APP_LOCALES=fr,en
      - HYDRA_ADMIN_BASE_URL=http://hydra:4445
      - TRUSTED_PROXIES=127.0.0.1,REMOTE_ADDR,localhost
      - ISSUER_URL=http://localhost:8000
      - BASE_URL=http://localhost:8082
      - DB_USER=lasql
      - DB_PASSWORD=lasql
      - DEFAULT_LOCALE=fr
      - DSN_REMOTE_DATABASE=pgsql:host='postgres';port=5432;dbname=lasql;
      - HASH_ALGO_LEGACY="sha256"
      - SECURITY_PATTERN=password,salt,pepper
      - CADDY_HTTP_PORT=8071

  oidc-test:
    image: bornholm/oidc-test:v0.0.0-1-g936a77e
    environment:
      - LOG_LEVEL=0
      - HTTP_ADDRESS=0.0.0.0:8000
      - OIDC_CLIENT_ID=oidc-test
      - OIDC_CLIENT_SECRET=oidc-test-123456
      - OIDC_ISSUER_URL=http://localhost:8081/
      - OIDC_REDIRECT_URL=http://localhost:8000
      - OIDC_POST_LOGOUT_REDIRECT_URL=http://localhost:8000
    depends_on:
      hydra:
        condition: service_healthy
    network_mode: host

    restart: unless-stopped
  hydra:
    image: cadoles/hydra-v1:v0.0.0-151-gc9c6fb1
    volumes:
      - ./misc/compose/hydra/clients.d:/etc/hydra/clients.d
    environment:
      - LOG_LEAK_SENSITIVE_VALUES=true
      - HYDRA_ALLOW_INSECURE=yes
      - HYDRA_URLS_SELF_ISSUER=http://localhost:8081/
      - HYDRA_URLS_LOGOUT=http://localhost:8082/logout
      - HYDRA_URLS_LOGIN=http://localhost:8082/
      - HYDRA_URLS_CONSENT=http://localhost:8082/connect/consent
      - HYDRA_URLS_ERROR=http://localhost:8082/error
      - HYDRA_LEVEL=debug
      - HYDRA_DSN=postgres://lasql:lasql@postgres:5432/hydra
      - HYDRA_WAIT4X_DATABASE_DSN=postgres://lasql:lasql@postgres:5432/hydra?sslmode=disable
      - HYDRA_WAIT4X_DATABASE_TYPE=postgresql

    ports:
      - 8081:4444
    links:
      - postgres
    healthcheck:
      test:
        [
          "CMD",
          "wget",
          "--spider",
          "-q",
          "http://127.0.0.1:4444/.well-known/openid-configuration",
        ]
      interval: 10s
      timeout: 10s
      retries: 10
      start_period: 10s
    restart: unless-stopped

  postgres:
    image: postgres:15-alpine
    restart: always
    environment:
      POSTGRES_USER: lasql
      POSTGRES_DB: lasql
      POSTGRES_PASSWORD: lasql
    volumes:
      - ./misc/compose/postgres/init-db.d:/docker-entrypoint-initdb.d/:ro
      - postgres:/var/lib/pgsql/data
      - /etc/localtime:/etc/localtime:ro

  pgadmin:
    image: dpage/pgadmin4
    ports:
      - 8085:80
    restart: always
    environment:
      PGADMIN_DEFAULT_EMAIL: admin@admin.com
      PGADMIN_DEFAULT_PASSWORD: admin
      PGADMIN_SERVER_JSON_FILE: /pgadminfile/server.json
    volumes:
      - ./misc/compose/pgadmin:/pgadminfile/:ro
  mariadb:
    image: mariadb:10.10
    environment:
      MYSQL_DATABASE: lasql
      MYSQL_USER: lasql
      MYSQL_PASSWORD: lasql
      MYSQL_ROOT_PASSWORD: lasql
      TZ: Europe/Paris
    volumes:
      - ./misc/compose/mariadb/init-db.d:/docker-entrypoint-initdb.d/:ro
      - mariadb:/var/lib/mysql
      - /etc/localtime:/etc/localtime:ro
  redis:
    image: redis:7.2-rc2-alpine
    environment:
      - TZ=Europe/Paris
    volumes:
      - /etc/localtime:/etc/localtime:ro

  altcha:
    image: reg.cadoles.com/cadoles/altcha:2024.10.29-develop.1213.22e038b
    environment:
      ALTCHA_HMAC_KEY: 'change_me'
volumes:
  postgres:
  mariadb: