Commit bb0049c4 authored by Stephane Bouvry's avatar Stephane Bouvry
Browse files

Merge branch 'starling-docker-env' into starling

parents 2d027b8e 833f57a8
Loading
Loading
Loading
Loading
Loading
+6 −2
Original line number Diff line number Diff line
@@ -7,6 +7,9 @@ config/autoload/unicaen-app.local.php
config/autoload/unicaen-auth.local.php
config/autoload/unicaen-signature.local.php
config/oscarworker.service
config/autoload/oscar.yml
.env
.env.dev

# Connecteurs
/config/connectors/*.yml
@@ -30,10 +33,12 @@ databases_maintenance/backup/*.sql
databases_maintenance/copy-prod-to-local.sh
!databases_maintenance/backup/.gitkeep

### Docker (dev)
### Docker (dev/prod)
compose.yml
.env.docker.dev

# Volumes
demo
docker/dev/volumes/*
!docker/dev/volumes/databases/.gitkeep
!docker/dev/volumes/documents/activity/.gitkeep
@@ -156,7 +161,6 @@ module/Demo
# DOCKER
dockerize/local/*
!dockerize/local/.gitkeep
.env
supervisord.log

# Fichier à générer

.prod.env.dist

0 → 100644
+70 −0
Original line number Diff line number Diff line
## POSTGRESQL (accès à la base de données)
OSCAR_CONTAINER_POSGRESQL=oscar-postgres
OSCAR_CONTAINER_POSGRESQL_USER=oscar_dev_user
OSCAR_CONTAINER_POSGRESQL_PASS=oscar_dev_pass
OSCAR_CONTAINER_POSGRESQL_BASE=oscar_dev_db
OSCAR_CONTAINER_POSGRESQL_PORT=5432

OSCAR_VOLUMES_POSTGRESQL_DATAS=/home/bouvry/oscar_data/postgresql
OSCAR_VOLUMES_ELASTICSEARCH_DATAS=/home/bouvry/oscar_data/elasticsearch
OSCAR_VOLUMES_DOCUMENTS_ACTIVITY=/home/bouvry/oscar_data/documents/activity
OSCAR_VOLUMES_DOCUMENTS_PUBLIC=/home/bouvry/oscar_data/documents/public
OSCAR_VOLUMES_DOCUMENTS_REQUEST=/home/bouvry/oscar_data/documents/request
OSCAR_VOLUMES_DOCUMENTS_PCRU=/home/bouvry/oscar_data/documents/pcru

## Email de/des administrateurs
# ex : jean.pierre@domain.fr,murielle@domain.fr
OSCAR_ADMIN_ADMINISTRATORS=stephane.bouvry@unicaen.fr

##################################################################
## Réglages métier (options)

# Feuille de temps
OSCAR_TIMESHEET_IMPORT_ENABLE=false

# Emails
OSCAR_MAILER_SUBJECT_PREFIX="[OSCAR DEMO]"

# Dépenses
OSCAR_SPENT_CLASS=Oscar\Connector\ConnectorSpentSifacOCI
OSCAR_SPENT_PARAMS_USERNAME=ucbn_oscar
OSCAR_SPENT_PARAMS_PASSWORD=NX3Ffgd2eG
OSCAR_SPENT_PARAMS_SID=F13
OSCAR_SPENT_PARAMS_PORT=1527
OSCAR_SPENT_PARAMS_HOSTNAME=sifacf.unicaen.fr
OSCAR_SPENT_PARAMS_SPENT_QUERY="select  MEASURE AS pfi,  RLDNR as AB9, STUNR as idsync,  awref AS numSifac, vrefbn as numCommandeAff, vobelnr as numPiece, LIFNR as numFournisseur, KNBELNR as pieceRef, fikrs AS codeSociete, BLART AS codeServiceFait, FAREA AS codeDomaineFonct, sgtxt AS designation, BKTXT as texteFacture, wrttp as typeDocument, TRBTR as montant, fistl as centreDeProfit, fipex as compteBudgetaire, prctr AS centreFinancier, HKONT AS compteGeneral, budat as datePiece, bldat as dateComptable, gjahr as dateAnneeExercice, zhldt AS datePaiement,  PSOBT AS dateServiceFait from sapsr3.v_fmifi where measure = '%s' AND MANDT='430' AND BTART='0250'"

LDAP_HOST=ldap.unicaen.fr
LDAP_PORT=389
LDAP_USERNAME="Identifiant LDAP"
LDAP_PASSWORD="ModeDePa$$"
LDAP_BASEDN=dn
LDAP_BASEDN_REQUIRED=true
LDAP_ACCOUNT_FILTER_FORMAT=FORMAT

LDAP_DN_UTILISATEURS_BASE_DN=ou=people,dc=unicaen,dc=fr
LDAP_DN_UTILISATEURS_DESACTIVES_BASE_DN=ou=deactivated,dc=unicaen,dc=fr
LDAP_DN_GROUPS_BASE_DN=ou=groups,dc=unicaen,dc=fr
LDAP_DN_STRUCTURES_BASE_DN=ou=structures,dc=unicaen,dc=fr

LDAP_FILTERS_LOGIN_FILTER=supannAliasLogin=%s
##################################################################
## Réglages avancès (technique)

# Niveau de logs -------------------------------------------------
# 100 (Debug) : Massive log, use in Developpement
# 200 (Info) : Preprod, surveillance d'un problème en prod
# 300 (Warning) : Prod
# 400 (Error)
# 500 (Critical)
# 600 (Emergency)
OSCAR_LOG_LEVEL=200

# Gearman --------------------------------------------------------
OSCAR_CONTAINER_GEARMAN=oscar-gearman
OSCAR_CONTAINER_GEARMAN_PORT=oscar-dev-gearman

# Elasticsearch --------------------------------------------------
OSCAR_CONTAINER_ELASTICSEARCH=oscar-elasticsearch
OSCAR_CONTAINER_ELASTICSEARCH_PORT=9200
OSCAR_CONTAINER_ELASTICSEARCH_ADDR=${OSCAR_CONTAINER_ELASTICSEARCH}:${OSCAR_CONTAINER_ELASTICSEARCH_PORT}
+5 −0
Original line number Diff line number Diff line
# 📢 CHANGEMENTS (MASTER/RIPLEY)
## 2025

### Avril
 - [starling] Version docker (Test/Preprod) + Script d'installation (copie des fichiers de configuration / template)
 - [starling] Version docker ( container de dev Mailhog / Kibana / Vite) - Doc
 - [starling] Version docker configuration via .env centralisée

### Mars
 - [starling] Application d'un avenant
 - [starling] Ajout des privilèges pour l'accès aux avenants
+22 −16
Original line number Diff line number Diff line
@@ -2,41 +2,47 @@

## Derniers changements

- [Liste des changement (CHANGELOG)](./CHANGELOG.md)
- [Liste des changements (CHANGELOG)](./CHANGELOG.md)
- [Documentation technique](doc/index.md)
- [Installation via Docker : Démo / Préprod](./docker/README.md)

## Versions

### Prochaine version "STARLING"
### Prochaines version (TODO non-planifié)
 - MAJ UI (Bootstrap)
 - intégration i18n / documentation développement

### Prochaine version 2.15 "Kusanagi"

Prévu (Fin Juin 2025) : 
 - PCRU
 - Docker (prod)
 - SIFAC+ (Selon la mise à disposition des APIs AMUE)
 - Signature numérique (parapheur)

### Version 2.14 "Starling" (Branche master)

Testing février 2025 - Stable mai 2025

| Nom de la version | Branche GIT         | N°de version | Status    |
|-------------------|-------------|--------------|-----------|
| *Starling*        | `starling`  | *2.14.x*     | *Testing* |
|-------------------|---------------------|--------------|-----------|
| *Starling*        | `master` `starling` | *2.14.x*     | *Testing* |

> [Note de mise à jour pour la version STARLING ](doc/versions/version-2.14-starling.md)
 
> **A VENIR**
>  - PCRU (En attente du CNRS)
>  - Dépenses : 
>    - Système permettant de l'utiliser plusieurs requêtes (En cours)
>    - Intégration SIFAC+ (En attente de la documentation de l'AMUE)
>  - Signature numérique : Nouveaux parapheurs
>  - Oscar Docker (prod) : A consolider/tester


### Stable (MASTER)
### Version "Ripley" (Branche ripley)

| Nom de la version | Branche GIT       | N°de version | Status    |
|-------------------|-------------------|--------------|-----------|
| *Ripley*          | `master` `ripley` | *2.13.x*     | *Testing* |
| *Ripley*          | `ripley` | *2.13.x*     | *Testing* |

> [Note de mise à jour pour la version RIPLEY ](doc/versions/version-2.13.2-ripley-php8.md)

### Versions antérieures (Non-maintenues)

- VERSION 2.12.1 "Spartan" ([Note de version](doc/versions/version-2.12.1.md))
- VERSION 2.12 "
  Spartan" ([Note de version](doc/versions/version-2.12.md) / [Mise à jour technique](doc/upgrade-to-spartan.md) )
- VERSION 2.12 "Spartan step PHP8" ([Note de version](doc/versions/version-2.12.md) / [Mise à jour technique](doc/upgrade-to-spartan.md) )
- VERSION 2.11 "MacClane" ([Note de version](doc/versions/version-2.11.md))
- VERSION 2.10 "Creed" ([Note de version](doc/versions/version-2.10.md))
- VERSION 2.9 "Matrix" ([Note de version](doc/versions/version-2.9.md))
+160 −69
Original line number Diff line number Diff line
########################################################################
# OSCAR DOCKER (Développement)
# OSCAR DOCKER (Prod)
########################################################################
networks:
  oscar-dev-network:
  app-network:
    driver: bridge

volumes:
  elastic_data:
    driver: local

services:
  ######################################################################
  # POSTGRESQL
  oscar-dev-postgres:
    container_name: oscar-dev-postgres
  app-postgres:
    container_name: app-postgres

    restart: always

    healthcheck:
      test: [ "CMD-SHELL", "pg_isready -U ${POSGRESQL_USER} -d ${POSGRESQL_BASE}" ]
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 10s


    environment:
      # Accès BDD
      POSTGRES_USER: oscar_dev_user
      POSTGRES_PASSWORD: oscar_dev_pass
      POSTGRES_DB: oscar_dev_db
      POSTGRES_USER: ${POSGRESQL_USER}
      POSTGRES_PASSWORD: ${POSGRESQL_PASS}
      POSTGRES_DB: ${POSGRESQL_BASE}
      http_proxy: ${HTTP_PROXY}
      no_proxy: ${NO_PROXY}

    networks:
      - oscar-dev-network
#    env_file: # TODO
#      - .env.docker.dev
    ports:
      - "6543:5432"
      - app-network

    env_file:
      - .env

    volumes:
      - ./docker/dev/volumes/databases/oscar_dev_data:/var/lib/postgresql/data
      - ./docker/dev/postgresql/docker-entrypoint-initdb.d/:/docker-entrypoint-initdb.d
      - ${VOLUMES_POSTGRESQL_DATAS}:/var/lib/postgresql/data
      - ./docker/postgres_initdb.d/:/docker-entrypoint-initdb.d

    build:
      context: ./docker/dev/postgresql
      dockerfile: Dockerfile
      context: ./docker
      dockerfile: postgres_Dockerfile
      args:
        - HTTP_PROXY

    ports:
      - "6543:5432"

  ######################################################################
  ### APACHE
  oscar-dev-apache:
    container_name: oscar-dev-apache
  app-apache:
    container_name: app-apache
    restart: unless-stopped
    volumes:
      - ./:/var/application

    depends_on:
      - oscar-dev-php
      - app-php

    networks:
      - oscar-dev-network
#    env_file: # TODO
#      - .env.docker.dev
      - app-network

    environment:
      http_proxy: ${HTTP_PROXY}
      no_proxy: ${NO_PROXY}

    env_file:
      - .env
    build:
      context: ./docker/dev/apache/
      dockerfile: Dockerfile
      context: ./docker/
      dockerfile: apache_Dockerfile
      args:
        - HTTP_PROXY
        - PHP_HOST

    extra_hosts:
      - host.docker.internal:host-gateway

    ports:
      - "8888:80"
#      - "9003:9003"


  ######################################################################
  ### GEARMAN
  oscar-dev-gearman:
    container_name: oscar-dev-gearman
  app-gearman:
    container_name: app-gearman
    image: artefactual/gearmand:1.1.21.2-alpine
    depends_on:
      - oscar-dev-postgres
      - app-postgres
    environment:
      http_proxy: ${HTTP_PROXY}
      no_proxy: ${NO_PROXY}
    networks:
      - oscar-dev-network
      - app-network
    env_file:
      - .env
    tty: true
    restart: "unless-stopped"


  ######################################################################
  ### ELASTICSEARCH
  oscar-dev-elasticsearch:
    container_name: oscar-dev-elasticsearch
    build:
      context: ./docker/dev/elasticsearch
      dockerfile: Dockerfile

  app-elasticsearch:
    container_name: app-elasticsearch
    image: elasticsearch:7.17.28
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
      - "ES_JAVA_OPTS=-Xms${ELASTICSEARCH_MEMORY} -Xmx${ELASTICSEARCH_MEMORY}"
    depends_on:
      - oscar-dev-postgres
      app-postgres:
        condition: service_healthy
    ulimits:
      memlock:
        soft: -1
        hard: -1
    volumes:
      - ./docker/dev/elasticsearch/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./docker/dev/elasticsearch/log4j2.properties:/usr/share/elasticsearch/config/log4j2.properties
      - ./docker/dev/volumes/elasticsearch:/usr/share/elasticsearch/data
      - ./docker/es_elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
      - ./docker/es_log4j2.properties:/usr/share/elasticsearch/config/log4j2.properties
      - elastic_data:/usr/share/elasticsearch/data
    user: "1000:1000"
    networks:
      - oscar-dev-network
      - app-network
    env_file:
      - .env
    tty: true
    restart: "always"


  ######################################################################
  ### WORKER
  oscar-dev-php:
    container_name: oscar-dev-php
  ### APPLICATION (Utilisée par Apache)
  app-php:
    container_name: app-php
    restart: unless-stopped
    depends_on:
      - oscar-dev-worker
      - app-worker
    volumes:
      - ./:/var/application
      # Dossiers
      - ${VOLUMES_DOCUMENTS_ACTIVITY}:/var/documents/activity
      - ${VOLUMES_DOCUMENTS_PUBLIC}:/var/documents/public
      - ${VOLUMES_DOCUMENTS_REQUEST}:/var/documents/request
      - ${VOLUMES_DOCUMENTS_PCRU}:/var/documents/pcru
      - ${VOLUMES_CACHE_DOCTRINE}:/var/application/data/DoctrineORMModule/Proxy
      - ${VOLUMES_LOG}:/var/application/logs
      # Fichiers de configuration
      - ${VOLUMES_CONFIG}/oscar-editable.yml:/var/application/config/autoload/oscar-editable.yml
      - ${VOLUMES_CONFIG}/local.php:/var/application/config/autoload/local.php
      - ${VOLUMES_CONFIG}/oscar.yml:/var/application/config/autoload/oscar.yml
      - ${VOLUMES_CONFIG}/unicaen-app.local.php:/var/application/config/autoload/unicaen-app.local.php
      - ${VOLUMES_CONFIG}/unicaen-auth.local.php:/var/application/config/autoload/unicaen-auth.local.php
      - ${VOLUMES_CONFIG}/unicaen-signature.local.php:/var/application/config/autoload/unicaen-signature.local.php
      # Fichiers (DEVELOPPEMENT UNIQUEMENT)
      #- ./docker/app_99-debug.ini:/usr/local/etc/php/conf.d/99-app-debug.ini
#    command:
#      - chmod -R 777 /var/application/data
    networks:
      - oscar-dev-network
      - app-network
    env_file:
      - .env
    environment:
      http_proxy: ${HTTP_PROXY}
      no_proxy: ${NO_PROXY}
    build:
      context: ./docker/dev/worker
      dockerfile: Dockerfile
      context: ./docker/
      dockerfile: app_Dockerfile
      args:
        - HTTP_PROXY
        - ENV_MODE


    ######################################################################
  ### WORKER
  oscar-dev-worker:
    container_name: oscar-dev-worker
  ### APPLICATION (Utilisée en mode CLI)
  app-worker:
    container_name: app-worker
    restart: unless-stopped
    depends_on:
      - oscar-dev-postgres
      - app-elasticsearch
    volumes:
      - ./:/var/application
      # Dossiers
      - ${VOLUMES_DOCUMENTS_ACTIVITY}:/var/documents/activity
      - ${VOLUMES_DOCUMENTS_PUBLIC}:/var/documents/public
      - ${VOLUMES_DOCUMENTS_REQUEST}:/var/documents/request
      - ${VOLUMES_DOCUMENTS_PCRU}:/var/documents/pcru
      - ${VOLUMES_CACHE_DOCTRINE}:/var/application/data/DoctrineORMModule/Proxy
      - ${VOLUMES_LOG}:/var/application/logs
      # Fichiers de configuration
      - ${VOLUMES_CONFIG}/oscar-editable.yml:/var/application/config/autoload/oscar-editable.yml
      - ${VOLUMES_CONFIG}/local.php:/var/application/config/autoload/local.php
      - ${VOLUMES_CONFIG}/oscar.yml:/var/application/config/autoload/oscar.yml
      - ${VOLUMES_CONFIG}/unicaen-app.local.php:/var/application/config/autoload/unicaen-app.local.php
      - ${VOLUMES_CONFIG}/unicaen-auth.local.php:/var/application/config/autoload/unicaen-auth.local.php
      - ${VOLUMES_CONFIG}/unicaen-signature.local.php:/var/application/config/autoload/unicaen-signature.local.php
    networks:
      - oscar-dev-network
#    env_file: # TODO
#      - .env.docker.dev
      - app-network
    env_file:
      - .env
    environment:
      http_proxy: ${HTTP_PROXY}
      no_proxy: ${NO_PROXY}
    build:
      context: ./docker/dev/worker
      dockerfile: Dockerfile
      context: ./docker/
      dockerfile: app_Dockerfile
      args:
        - HTTP_PROXY
        - ENV_MODE
    command: ["/bin/bash", "/entrypoint.sh"]

  ######################################################################
  ### VITE
  oscar-dev-vite:
    container_name: oscar-dev-vite
  app-vite:
    container_name: app-vite
    volumes:
      - ./:/var/application
    networks:
      - oscar-dev-network
      - app-network
    build:
      context: ./docker/dev/vite
      dockerfile: Dockerfile
#    deploy:
#      replicas: ${DEVELOPPEMENT:-0}
    ports:
      - "5173:5173"

@@ -146,15 +233,17 @@ services:
  ######################################################################
  # KIBANA
  kibana:
    image: docker.elastic.co/kibana/kibana:7.17.28
    container_name: oscar-dev-kibana
    image: docker.elastic.co/kibana/kibana:7.16.1
    container_name: app-kibana
    depends_on:
      - oscar-dev-elasticsearch
      - app-elasticsearch
    networks:
      - oscar-dev-network
      - app-network
#    deploy:
#      replicas: ${DEVELOPPEMENT:-0}
    environment:
      - ELASTICSEARCH_HOSTS=http://oscar-dev-elasticsearch:9200  # Connexion à Elasticsearch
      - LOGGING_ROOT_LEVEL=ERROR
      - ELASTICSEARCH_HOSTS=http://app-elasticsearch:9200  # Connexion à Elasticsearch
      - LOGGING_ROOT_LEVEL=error
    ports:
      - "5601:5601"

@@ -163,10 +252,12 @@ services:
  # MAILHOG (capture les mails envoyés depuis Oscar)
  mailhog:
    image: mailhog/mailhog
    container_name: oscar-dev-mailhog
    container_name: app-mailhog
    networks:
      - oscar-dev-network
    entrypoint: ["/bin/sh", "-c", "MailHog | grep -v KEEPALIVE"]
      - app-network
#    deploy:
#      replicas: ${DEVELOPPEMENT:-0}
    entrypoint: ["/bin/sh", "-c", "MailHog"]
    ports:
      - "8025:8025" # Interface web MailHog
      - "1025:1025" # Port SMTP pour envoyer les mails
 No newline at end of file
Loading