Neah-Enkun/compose.yml

137 lines
3.7 KiB
YAML

networks:
default:
volumes:
keycloak_data:
portainer_data:
mysql_data:
nextcloud_data:
services:
traefik:
container_name: neah-traefik
image: traefik:latest
command:
- "--api.insecure=true"
- "--providers.docker=true"
- "--entrypoints.web.address=:80"
ports:
- "80:80"
- "8080:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks:
- default
restart: unless-stopped
portainer:
container_name: neah-portainer
image: portainer/portainer-ce:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer_data:/data
- "./portainer_password:/portainer_password"
ports:
- "9000:9000"
labels:
- "traefik.enable=true"
- "traefik.http.routers.neah-portainer.rule=Host(`${PORTAINER_HOST}.${MAIN_DOMAIN}`)"
- "traefik.http.services.neah-portainer.loadbalancer.server.port=9000"
command: --admin-password-file '/portainer_password'
networks:
- default
restart: unless-stopped
front:
container_name: neah-front
build:
context: ./front
dockerfile: Dockerfile
environment:
- NODE_ENV=production
ports:
- "3000:3000"
labels:
- "traefik.enable=true"
- "traefik.http.routers.neah-front.rule=Host(`${MAIN_DOMAIN}`)"
- "traefik.http.services.neah-front.loadbalancer.server.port=3000"
extra_hosts:
- "${KEYCLOAK_HOST}.${MAIN_DOMAIN}:${KEYCLOAK_HOST_IP}"
networks:
- default
restart: unless-stopped
keycloak:
container_name: neah-keycloak
image: quay.io/keycloak/keycloak:latest
#TODO: Passer a "start" en prod (Nécessite un certificat valide)
command: ["start-dev"]
environment:
KC_BOOTSTRAP_ADMIN_USERNAME: ${KEYCLOAK_USER}
KC_BOOTSTRAP_ADMIN_PASSWORD: ${KEYCLOAK_PASSWORD}
KEYCLOAK_ADMIN: ${KEYCLOAK_USER}
KEYCLOAK_ADMIN_PASSWORD: ${KEYCLOAK_PASSWORD}
KC_PROXY: edge
KC_HOSTNAME_STRICT: false
KC_HOSTNAME_STRICT_HTTPS: false
ports:
- "8090:8080"
labels:
- "traefik.enable=true"
- "traefik.http.routers.neah-keycloak.rule=Host(`${KEYCLOAK_HOST}.${MAIN_DOMAIN}`)"
- "traefik.http.services.neah-keycloak.loadbalancer.server.port=8080"
volumes:
- keycloak_data:/opt/keycloak/data
networks:
- default
restart: unless-stopped
mysql:
container_name: neah-mysql
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
command:
- --transaction-isolation=READ-COMMITTED
- --binlog-format=ROW
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
interval: 10s
timeout: 5s
retries: 5
volumes:
- mysql_data:/var/lib/mysql
networks:
- default
restart: unless-stopped
nextcloud:
container_name: neah-nextcloud
image: nextcloud:latest
environment:
MYSQL_HOST: mysql
MYSQL_DATABASE: ${NEXTCLOUD_MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
NEXTCLOUD_ADMIN_USER: ${NEXTCLOUD_ADMIN_USER}
NEXTCLOUD_ADMIN_PASSWORD: ${NEXTCLOUD_ADMIN_PASSWORD}
PHP_MEMORY_LIMIT: 512M
PHP_UPLOAD_LIMIT: 512M
volumes:
- nextcloud_data:/var/www/html
ports:
- "8081:80"
labels:
- "traefik.enable=true"
- "traefik.http.routers.neah-nextcloud.rule=Host(`cloud.${MAIN_DOMAIN}`)"
- "traefik.http.services.neah-nextcloud.loadbalancer.server.port=80"
networks:
- default
depends_on:
mysql:
condition: service_healthy
restart: unless-stopped