283 lines
7.3 KiB
YAML
Executable File
283 lines
7.3 KiB
YAML
Executable File
version: '3'
|
|
|
|
# Port
|
|
# 8005 = nineskeletor
|
|
# 6379 = redis
|
|
# 5432 = postgresql
|
|
# 80 = mercure
|
|
# 9000 = minio nginx
|
|
# 1025 = fake smtp
|
|
# 1080 = fake webmail
|
|
# 389 = fake ldap
|
|
# 636 = fake ldaps
|
|
# 6080 = tool phpldapadmin
|
|
# 6081 = tool adminer
|
|
|
|
|
|
services:
|
|
|
|
nineskeletor:
|
|
build:
|
|
context: .
|
|
dockerfile: ./misc/docker/Dockerfile
|
|
container_name: nineskeletor-app
|
|
image: reg.cadoles.com/envole/nineskeletor
|
|
ports:
|
|
- "8005:80"
|
|
- "5588:5588"
|
|
volumes:
|
|
- ./src:/app/src:delegated
|
|
- ./templates:/app/templates:delegated
|
|
- ./config:/app/config:delegated
|
|
- ./.env:/app/.env:delegated
|
|
- ./public/uploads:/app/public/uploads:delegated
|
|
- ./misc:/app/misc:delegated
|
|
|
|
# Service redis pour le stockage des sessions
|
|
redis:
|
|
image: redis:4.0
|
|
container_name: nineskeletor-redis
|
|
ports:
|
|
- 6379:6379
|
|
environment:
|
|
- TZ=Europe/Paris
|
|
volumes:
|
|
- /etc/localtime:/etc/localtime:ro
|
|
|
|
# Service postgresql pour le stockage de la bdd applicative
|
|
postgresql:
|
|
image: postgres:13-alpine
|
|
container_name: nineskeletor-postgresql
|
|
hostname: nineskeletor-postgresql
|
|
environment:
|
|
POSTGRES_MULTIPLE_DATABASES: nineskeletor,hydra
|
|
POSTGRES_PASSWORD: ChangeMe
|
|
POSTGRES_USER: symfony
|
|
ports:
|
|
- 5432:5432
|
|
volumes:
|
|
- db-data:/var/lib/postgresql/data:rw
|
|
- ./containers/postgresql:/docker-entrypoint-initdb.d
|
|
|
|
# Service websocket
|
|
mercure:
|
|
image: dunglas/mercure
|
|
container_name: nineskeletor-mercure
|
|
restart: unless-stopped
|
|
ports:
|
|
- "80"
|
|
environment:
|
|
SERVER_NAME: ':80'
|
|
MERCURE_PUBLISHER_JWT_KEY: '!changeme!changeme!changeme!changeme!changeme!changeme!'
|
|
MERCURE_SUBSCRIBER_JWT_KEY: '!changeme!changeme!changeme!changeme!changeme!changeme!'
|
|
MERCURE_EXTRA_DIRECTIVES: |
|
|
cors_origins https://127.0.0.1:8000
|
|
# Comment the following line to disable the development mode
|
|
command: /usr/bin/caddy run -config /etc/caddy/Caddyfile.dev
|
|
volumes:
|
|
- mercure_data:/data
|
|
- mercure_config:/config
|
|
|
|
# Service de stockage Minio
|
|
minio1:
|
|
image: minio/minio:RELEASE.2021-01-16T02-19-44Z
|
|
container_name: nineskeletor-minio1
|
|
volumes:
|
|
- data1-1:/data1
|
|
- data1-2:/data2
|
|
expose:
|
|
- "9000"
|
|
environment:
|
|
MINIO_ROOT_USER: minio
|
|
MINIO_ROOT_PASSWORD: changeme
|
|
command: server http://minio{1...4}/data{1...2}
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:9000/minio/health/live"]
|
|
interval: 30s
|
|
timeout: 20s
|
|
retries: 3
|
|
|
|
# Service de stockage Minio
|
|
minio2:
|
|
image: minio/minio:RELEASE.2021-01-16T02-19-44Z
|
|
container_name: nineskeletor-minio2
|
|
volumes:
|
|
- data2-1:/data1
|
|
- data2-2:/data2
|
|
expose:
|
|
- "9000"
|
|
environment:
|
|
MINIO_ROOT_USER: minio
|
|
MINIO_ROOT_PASSWORD: changeme
|
|
command: server http://minio{1...4}/data{1...2}
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:9000/minio/health/live"]
|
|
interval: 30s
|
|
timeout: 20s
|
|
retries: 3
|
|
|
|
# Service de stockage Minio
|
|
minio3:
|
|
image: minio/minio:RELEASE.2021-01-16T02-19-44Z
|
|
container_name: nineskeletor-minio3
|
|
volumes:
|
|
- data3-1:/data1
|
|
- data3-2:/data2
|
|
expose:
|
|
- "9000"
|
|
environment:
|
|
MINIO_ROOT_USER: minio
|
|
MINIO_ROOT_PASSWORD: changeme
|
|
command: server http://minio{1...4}/data{1...2}
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:9000/minio/health/live"]
|
|
interval: 30s
|
|
timeout: 20s
|
|
retries: 3
|
|
|
|
# Service de stockage Minio
|
|
minio4:
|
|
image: minio/minio:RELEASE.2021-01-16T02-19-44Z
|
|
container_name: nineskeletor-minio4
|
|
volumes:
|
|
- data4-1:/data1
|
|
- data4-2:/data2
|
|
expose:
|
|
- "9000"
|
|
environment:
|
|
MINIO_ROOT_USER: minio
|
|
MINIO_ROOT_PASSWORD: changeme
|
|
command: server http://minio{1...4}/data{1...2}
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://127.0.0.1:9000/minio/health/live"]
|
|
interval: 30s
|
|
timeout: 20s
|
|
retries: 3
|
|
|
|
# Service nginx orchestrateur des minio
|
|
nginx:
|
|
image: nginx:1.19.2-alpine
|
|
container_name: nineskeletor-nginx
|
|
volumes:
|
|
- ./containers/minio/nginx.conf:/etc/nginx/nginx.conf:ro
|
|
ports:
|
|
- "9000:9000"
|
|
depends_on:
|
|
- minio1
|
|
- minio2
|
|
- minio3
|
|
- minio4
|
|
|
|
# Service hydra
|
|
hydra:
|
|
image: cadoles/hydra-v1
|
|
container_name: nineskeletor-hydra
|
|
volumes:
|
|
- ./containers/hydra/clients.d:/etc/hydra/clients.d
|
|
ports:
|
|
- 7080:4444
|
|
- 4445:4445
|
|
links:
|
|
- postgresql
|
|
depends_on:
|
|
- postgresql
|
|
restart: on-failure
|
|
environment:
|
|
LOG_LEAK_SENSITIVE_VALUES: "true"
|
|
HYDRA_URLS_SELF_ISSUER: http://localhost:7080
|
|
HYDRA_URLS_CONSENT: http://localhost:7081/consent
|
|
HYDRA_URLS_LOGIN: http://localhost:7081/login
|
|
HYDRA_URLS_LOGOUT: http://localhost:7081/logout
|
|
HYDRA_URLS_ERROR: https://localhost:8005
|
|
HYDRA_DSN: postgres://symfony:ChangeMe@postgresql:5432/hydra
|
|
#HYDRA_WAIT4X_DATABASE_TYPE: postgres
|
|
#HYDRA_WAIT4X_DATABASE_DSN: postgres://symfony:ChangeMe@postgresql:5432/hydra
|
|
HYDRA_ALLOW_INSECURE: "yes"
|
|
HYDRA_LEVEL: debug
|
|
|
|
hydra-dispatcher:
|
|
build:
|
|
context: ./containers/hydra-dispatcher
|
|
container_name: nineskeletor-hydra-dispatcher
|
|
links:
|
|
- hydra
|
|
ports:
|
|
- 7081:80
|
|
restart: on-failure
|
|
environment:
|
|
- APP_ENV=dev
|
|
- APP_DEBUG=yes
|
|
- HYDRA_BASE_URL=http://hydra:4444
|
|
- HYDRA_ADMIN_BASE_URL=http://hydra:4445
|
|
# url dispatcher
|
|
- BASE_URL=http://localhost:7081
|
|
- COOKIE_PATH=/
|
|
- DEFAULT_LOCALE=fr
|
|
- APP_LOCALES=fr,en
|
|
volumes:
|
|
- ./containers/hydra-dispatcher/hydra:/var/www/config/hydra:ro
|
|
- ./containers/hydra-dispatcher/templates:/var/www/templates
|
|
- ./containers/hydra-dispatcher/theme.css:/var/www/public/build/theme/theme.css
|
|
|
|
# Service fake smtp = optionnel
|
|
mailer:
|
|
image: schickling/mailcatcher
|
|
container_name: nineskeletor-mailer
|
|
ports:
|
|
- 1025:1025
|
|
- 1080:1080
|
|
|
|
# Service fake openldap = optionnel si nineskeletor a une synchronisation avec un annuaire
|
|
openldap:
|
|
image: osixia/openldap:1.5.0
|
|
container_name: nineskeletor-openldap
|
|
environment:
|
|
LDAP_LOG_LEVEL: "256"
|
|
LDAP_ORGANISATION: "nine"
|
|
LDAP_DOMAIN: "nine.fr"
|
|
LDAP_ADMIN_PASSWORD: "changeme"
|
|
LDAP_CONFIG_PASSWORD: "changeme"
|
|
LDAP_READONLY_USER: "true"
|
|
LDAP_READONLY_USER_USERNAME: "readonly"
|
|
LDAP_READONLY_USER_PASSWORD: "readonly"
|
|
LDAP_TLS: "false"
|
|
volumes:
|
|
- /var/lib/ldap
|
|
- /etc/ldap/slapd.d
|
|
- /container/service/slapd/assets/certs/
|
|
ports:
|
|
- "389:389"
|
|
- "636:636"
|
|
|
|
# Service tool phpldapadmin = optionnel dans le cas de la présence d'un fake openldap
|
|
phpldapadmin:
|
|
image: osixia/phpldapadmin:latest
|
|
container_name: nineskeletor-phpldapadmin
|
|
environment:
|
|
PHPLDAPADMIN_LDAP_HOSTS: "openldap"
|
|
PHPLDAPADMIN_HTTPS: "false"
|
|
ports:
|
|
- "6080:80"
|
|
depends_on:
|
|
- openldap
|
|
|
|
# Service tool adminer = optionnel
|
|
adminer:
|
|
image: adminer
|
|
container_name: nineskeletor-adminer
|
|
restart: always
|
|
ports:
|
|
- 6081:8080
|
|
|
|
volumes:
|
|
db-data:
|
|
mercure_data:
|
|
mercure_config:
|
|
data1-1:
|
|
data1-2:
|
|
data2-1:
|
|
data2-2:
|
|
data3-1:
|
|
data3-2:
|
|
data4-1:
|
|
data4-2: |