feat(caddy): preparation passage à caddy
Cadoles/hydra-sql/pipeline/pr-develop There was a failure building this commit Details

This commit is contained in:
cmsassot 2024-03-26 14:29:50 +01:00
parent 9420354ec0
commit 36bc3b1554
4 changed files with 53 additions and 36 deletions

View File

@ -2,6 +2,7 @@ version: "3.8"
services: services:
hydra-sql: hydra-sql:
container_name: hydra-sql container_name: hydra-sql
user: www-data
build: build:
context: . context: .
dockerfile: ./misc/images/hydra-sql-standalone/Dockerfile dockerfile: ./misc/images/hydra-sql-standalone/Dockerfile
@ -11,7 +12,7 @@ services:
- http_proxy=${http_proxy} - http_proxy=${http_proxy}
- https_proxy=${https_proxy} - https_proxy=${https_proxy}
ports: ports:
- 8082:8080 - 8082:8071
volumes: volumes:
- ./src:/app/src - ./src:/app/src
- ./config:/app/config - ./config:/app/config
@ -30,7 +31,6 @@ services:
- "host.docker.internal:host-gateway" - "host.docker.internal:host-gateway"
environment: environment:
- PHP_FPM_MEMORY_LIMIT=128m - PHP_FPM_MEMORY_LIMIT=128m
- APP_ENV=dev
- APP_LOCALES=fr,en - APP_LOCALES=fr,en
- HYDRA_ADMIN_BASE_URL=http://hydra:4445 - HYDRA_ADMIN_BASE_URL=http://hydra:4445
- TRUSTED_PROXIES=127.0.0.1,REMOTE_ADDR,localhost - TRUSTED_PROXIES=127.0.0.1,REMOTE_ADDR,localhost
@ -42,7 +42,7 @@ services:
- DSN_REMOTE_DATABASE=pgsql:host='postgres';port=5432;dbname=lasql; - DSN_REMOTE_DATABASE=pgsql:host='postgres';port=5432;dbname=lasql;
- HASH_ALGO_LEGACY="sha256" - HASH_ALGO_LEGACY="sha256"
- SECURITY_PATTERN=password,salt,pepper - SECURITY_PATTERN=password,salt,pepper
- CADDY_HTTP_PORT=8071
oidc-test: oidc-test:
image: bornholm/oidc-test:v0.0.0-1-g936a77e image: bornholm/oidc-test:v0.0.0-1-g936a77e
@ -82,7 +82,14 @@ services:
links: links:
- postgres - postgres
healthcheck: healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:4444/.well-known/openid-configuration"] test:
[
"CMD",
"wget",
"--spider",
"-q",
"http://127.0.0.1:4444/.well-known/openid-configuration",
]
interval: 10s interval: 10s
timeout: 10s timeout: 10s
retries: 10 retries: 10
@ -107,9 +114,9 @@ services:
- 8085:80 - 8085:80
restart: always restart: always
environment: environment:
PGADMIN_DEFAULT_EMAIL: admin@admin.com PGADMIN_DEFAULT_EMAIL: admin@admin.com
PGADMIN_DEFAULT_PASSWORD: admin PGADMIN_DEFAULT_PASSWORD: admin
PGADMIN_SERVER_JSON_FILE: /pgadminfile/server.json PGADMIN_SERVER_JSON_FILE: /pgadminfile/server.json
volumes: volumes:
- ./misc/compose/pgadmin:/pgadminfile/:ro - ./misc/compose/pgadmin:/pgadminfile/:ro
mariadb: mariadb:

View File

@ -12,5 +12,4 @@ ARG ADDITIONAL_PACKAGES="bash=5.2.15-r0 \
php81-pdo_mysql=${PHP_PKG_VERSION} \ php81-pdo_mysql=${PHP_PKG_VERSION} \
php81-bcmath=${PHP_PKG_VERSION}" php81-bcmath=${PHP_PKG_VERSION}"
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone-2023.11.16-stable.1541.eec311d FROM reg.cadoles.com/cadoles/symfony:TODOTAG_BASE

View File

@ -12,5 +12,5 @@ ARG ADDITIONAL_PACKAGES="bash=5.2.15-r0 \
php81-pdo_mysql=${PHP_PKG_VERSION} \ php81-pdo_mysql=${PHP_PKG_VERSION} \
php81-bcmath=${PHP_PKG_VERSION}" php81-bcmath=${PHP_PKG_VERSION}"
FROM reg.cadoles.com/cadoles/symfony:alpine-php-8.1-standalone-2023.11.16-stable.1541.eec311d FROM reg.cadoles.com/cadoles/symfony:TODOTAG_STANDALONE
USER www-data

View File

@ -3,36 +3,44 @@
Une [LoginApp](https://www.ory.sh/docs/hydra/concepts/login) pour le serveur OpenID Connect [Ory/Hydra](https://github.com/ory/hydra). Une [LoginApp](https://www.ory.sh/docs/hydra/concepts/login) pour le serveur OpenID Connect [Ory/Hydra](https://github.com/ory/hydra).
Elle permet de se connecter à une base de donnée et de vérifier un mot de passe donné sur une mire locale puis d'aller chercher des données demandées Elle permet de se connecter à une base de donnée et de vérifier un mot de passe donné sur une mire locale puis d'aller chercher des données demandées
## Image
- L'image standalone est construite en utilisant l'utilisateur `www-data` pour lancer supervisor (qui va lancer le process php-fpm et caddy, avec ce même user)
- C'est pour cela qu'on fini par "USER www-data" à la fin de `misc/images/hydra-oidc-standalone/Dockerfile`, sinon le conteneur `hydra-sql` ne tournera pas
## Configuration ## Configuration
### Variables d'environnement ### Variables d'environnement
|Variable|Description|Valeur par défaut|Utilisation| | Variable | Description | Valeur par défaut | Utilisation |
|--------|-----------|-----------------|-----------| | ---------------------- | ------------------------------------------------------ | --------------------------------------------------------------------------- | ----------- |
|`APP_ENV`|Environnement symfony|prod|dev:prod| | `APP_ENV` | Environnement symfony | prod | dev:prod |
|`APP_DEBUG`|Console de debug symofny|false|true:false| | `APP_DEBUG` | Console de debug symofny | false | true:false |
|`PHP_FPM_MEMORY_LIMIT`|php-fpm memory limit|128mo|| | `PHP_FPM_MEMORY_LIMIT` | php-fpm memory limit | 128mo | |
|`NGINX_APP_SERVER_LISTEN`|Port d'écoute de l'application|8080|| | `CADDY_HTTP_PORT` | Port d'écoute de l'application | 8080 | |
|`HYDRA_ADMIN_BASE_URL`|Url d'admin Hydra ou dispatcher|http://hydra:4445|obligatoire| | `HYDRA_ADMIN_BASE_URL` | Url d'admin Hydra ou dispatcher | http://hydra:4445 | obligatoire |
|`BASE_URL`|Url d'accès|http://localhost:8080|obligatoire| | `BASE_URL` | Url d'accès | http://localhost:8080 | obligatoire |
|`DSN_REMOTE_DATABASE`|DSN de la BDD|postgresql://lasql:lasql@postgres:5432/lasql?serverVersion=15&chartset=utf8|| | `DSN_REMOTE_DATABASE` | DSN de la BDD | postgresql://lasql:lasql@postgres:5432/lasql?serverVersion=15&chartset=utf8 | |
|`DB_USER`|User de connection à la BDD|lasql|obligatoire| | `DB_USER` | User de connection à la BDD | lasql | obligatoire |
|`DB_PASSWORD`|PAssword de l'utilisateur de la BDD|lasql|obligatoire| | `DB_PASSWORD` | PAssword de l'utilisateur de la BDD | lasql | obligatoire |
|`APP_LOCALES`|Langues disponibles dans l'application|fr,en|obligatoire| | `APP_LOCALES` | Langues disponibles dans l'application | fr,en | obligatoire |
|`HASH_ALGO_LEGACY`|ALgorythme de Hashage par défaut|sha256|| | `HASH_ALGO_LEGACY` | ALgorythme de Hashage par défaut | sha256 | |
|`SECURITY_PATTERN`|Séquence à employer pour le hashage du mot de passe|password,salt,pepper|obligatoire| | `SECURITY_PATTERN` | Séquence à employer pour le hashage du mot de passe | password,salt,pepper | obligatoire |
|`PEPPER`|Pepper utilisé pour le Hashage||| | `PEPPER` | Pepper utilisé pour le Hashage | | |
|`REDIS_DSN`|DSN du serveur Redis|redis://redis:6379|obligatoire| | `REDIS_DSN` | DSN du serveur Redis | redis://redis:6379 | obligatoire |
|`URL_LINK`|Url pouvant être utilisée dans les liens des templates||| | `URL_LINK` | Url pouvant être utilisée dans les liens des templates | | |
### Algorithmes de hashage compatibles ### Algorithmes de hashage compatibles
La login app est compatible par défaut avec toutes les méthodes de hashage de PHP et avec SSHA. Aucune configuration supplémentaire n'est nécessaire. La login app est compatible par défaut avec toutes les méthodes de hashage de PHP et avec SSHA. Aucune configuration supplémentaire n'est nécessaire.
### Pattern de hashage ### Pattern de hashage
Définir dans la variable `SECURITY_PATTERN` le pattern utilisé avec les mots clés: password | salt | pepper séparé par des virgules pour représenter la séquence à employer pour le hashage du mot de passe. Définir dans la variable `SECURITY_PATTERN` le pattern utilisé avec les mots clés: password | salt | pepper séparé par des virgules pour représenter la séquence à employer pour le hashage du mot de passe.
Exemple : `SECURITY_PATTERN="salt,password,pepper"` Exemple : `SECURITY_PATTERN="salt,password,pepper"`
### Schéma de base de donnée ### Schéma de base de donnée
Permet d'adapter les requetes SQL à la base de donnée utilisée en indiquant les noms de colonnes de celle-ci. Permet d'adapter les requetes SQL à la base de donnée utilisée en indiquant les noms de colonnes de celle-ci.
```yaml ```yaml
@ -51,6 +59,7 @@ sql_login:
## Environnement de développement ## Environnement de développement
### Tester ### Tester
Se rendre sur [http://localhost:8000/](http://localhost:8000/) et cliquer `Login` pour commencer une nouvelle connexion. Se rendre sur [http://localhost:8000/](http://localhost:8000/) et cliquer `Login` pour commencer une nouvelle connexion.
3 utilisateurs d'exemple sont disponible pour les tests: 3 utilisateurs d'exemple sont disponible pour les tests:
| Login | Mot de passe | Algorithme | | Login | Mot de passe | Algorithme |
@ -60,8 +69,10 @@ Se rendre sur [http://localhost:8000/](http://localhost:8000/) et cliquer `Login
| test3@test.com | 123456 | SSHA | | test3@test.com | 123456 | SSHA |
### Base de donnée ### Base de donnée
2 bases de données différentes sont disponible pour les tests. 2 bases de données différentes sont disponible pour les tests.
Pour choisir la base de donnée à utiliser, modifier les d'environnement relatives à la base de donnée. Pour choisir la base de donnée à utiliser, modifier les d'environnement relatives à la base de donnée.
- **URL Postgres**: `postgresql://lasql:lasql@mariadb:3306/lasql?serverVersion=15&chartset=utf8` - **URL Postgres**: `postgresql://lasql:lasql@mariadb:3306/lasql?serverVersion=15&chartset=utf8`
- **URL Mariadb**: `mysql://lasql:lasql@postgres:5432/lasql` - **URL Mariadb**: `mysql://lasql:lasql@postgres:5432/lasql`
@ -72,11 +83,11 @@ ex : `'redis:?host[redis1:26379]&host[redis2:26379]&host[redis3:26379]&redis_sen
### Liste des ports ### Liste des ports
|Nom|Description|Port(s) hôte utilisé(s)| | Nom | Description | Port(s) hôte utilisé(s) |
|---|-----------|------------------| | ----------- | -------------------------------------------------------------------------- | ----------------------- |
|`oidc-test`|Application factice permettant de tester l'authentification OpenID Connect|`8080`| | `oidc-test` | Application factice permettant de tester l'authentification OpenID Connect | `8080` |
|`hydra`|Serveur Ory/Hydra|`8081`| | `hydra` | Serveur Ory/Hydra | `8081` |
|`hydra-sql`|Login/Consent/Logout App (ce projet)|`8082`| | `hydra-sql` | Login/Consent/Logout App (ce projet) | `8082` |
|`postgres`| Base de donnée postgres support du test et pour hydra|`5432` | `postgres` | Base de donnée postgres support du test et pour hydra | `5432` |
|`mariadb`| Base de donnée mariadb support du test|`3306` | `mariadb` | Base de donnée mariadb support du test | `3306` |
|`pgadmin`| pour administrer la base de donnée |`8085` | `pgadmin` | pour administrer la base de donnée | `8085` |