174 lines
5.3 KiB
YAML
174 lines
5.3 KiB
YAML
|
version: "3"
|
||
|
services:
|
||
|
yonote:
|
||
|
container_name: yonote
|
||
|
image: images.updates.yonote.ru/yonote:${APP_VERSION}
|
||
|
env_file:
|
||
|
- .env
|
||
|
ports:
|
||
|
- "3000"
|
||
|
depends_on:
|
||
|
- postgres
|
||
|
- redis
|
||
|
- keycloak
|
||
|
- s3-client
|
||
|
command: yarn start:selfhosted
|
||
|
environment:
|
||
|
BIND_HOST: 0.0.0.0
|
||
|
PORT: 3000
|
||
|
URL: ${YNT_HTTP_PROTOCOL}${BASENAME_FOR_SUBDOMAIN}
|
||
|
COLLABORATION_URL: ${YNT_WEBSOCKET_PROTOCOL}${BASENAME_FOR_SUBDOMAIN}
|
||
|
DATABASE_URL: postgres://${YNT_DB_USER}:${YNT_DB_PASSWORD}@postgres:5432/${YNT_DB_NAME}
|
||
|
OIDC_CLIENT_ID: yonote
|
||
|
OIDC_CLIENT_SECRET: ${KC_CLIENT_SECRET}
|
||
|
OIDC_AUTH_URI: ${KC_YNT_URL}/realms/yonote/protocol/openid-connect/auth
|
||
|
OIDC_TOKEN_URI: ${KC_YNT_URL}/realms/yonote/protocol/openid-connect/token
|
||
|
OIDC_USERINFO_URI: ${KC_YNT_URL}/realms/yonote/protocol/openid-connect/userinfo
|
||
|
OIDC_LOGOUT_URI: ${KC_YNT_URL}/realms/yonote/protocol/openid-connect/logout
|
||
|
AWS_S3_UPLOAD_BUCKET_URL: ${MINIO_YNT_URL}
|
||
|
AWS_ACCESS_KEY_ID: ${MINIO_ACCESS_KEY_ID}
|
||
|
AWS_SECRET_ACCESS_KEY: ${MINIO_SECRET_ACCESS_KEY}
|
||
|
AWS_S3_UPLOAD_BUCKET_NAME: yonote-bucket
|
||
|
AWS_REGION: xx-xxxx-x
|
||
|
TELEGRAM_API_URL: https://api.telegram.org
|
||
|
OIDC_DISPLAY_NAME: email
|
||
|
OIDC_SCOPES: openid email
|
||
|
REDIS_URL: redis://redis:6379
|
||
|
PGSSLMODE: disable
|
||
|
USE_LEGACY_LOGOUT: true
|
||
|
AWS_S3_FORCE_PATH_STYLE: true
|
||
|
AWS_S3_ACL: private
|
||
|
volumes:
|
||
|
- ./License.key:/opt/yonote/License.key
|
||
|
networks:
|
||
|
- yonote-network
|
||
|
external_links:
|
||
|
- "nginx:${KC_YNT_HOST}"
|
||
|
- "nginx:${MINIO_YNT_HOST}"
|
||
|
|
||
|
redis:
|
||
|
container_name: redis
|
||
|
image: redis:7-alpine
|
||
|
restart: unless-stopped
|
||
|
user: "redis:redis"
|
||
|
networks:
|
||
|
- yonote-network
|
||
|
|
||
|
postgres:
|
||
|
container_name: postgres
|
||
|
image: postgres:14
|
||
|
restart: unless-stopped
|
||
|
environment:
|
||
|
POSTGRES_DB: ${YNT_DB_NAME}
|
||
|
POSTGRES_USER: ${YNT_DB_USER}
|
||
|
POSTGRES_PASSWORD: ${YNT_DB_PASSWORD}
|
||
|
KC_DB_USERNAME: ${KC_DB_USERNAME}
|
||
|
KC_DB_PASSWORD: ${KC_DB_PASSWORD}
|
||
|
user: "postgres:postgres"
|
||
|
volumes:
|
||
|
- db:/var/lib/postgresql/data
|
||
|
- ./postgres/init-keycloak-db.sh:/docker-entrypoint-initdb.d/init-keycloak-db.sh
|
||
|
networks:
|
||
|
- yonote-network
|
||
|
|
||
|
s3:
|
||
|
container_name: minio
|
||
|
image: minio/minio:RELEASE.2024-03-03T17-50-39Z
|
||
|
restart: unless-stopped
|
||
|
environment:
|
||
|
- MINIO_ROOT_USER=${MINIO_ADMIN_USERNAME}
|
||
|
- MINIO_ROOT_PASSWORD=${MINIO_ADMIN_PASSWORD}
|
||
|
command: server --address :9000 --console-address :9001 /data
|
||
|
ports:
|
||
|
- "9000"
|
||
|
- "9001"
|
||
|
volumes:
|
||
|
- minio:/data
|
||
|
networks:
|
||
|
- yonote-network
|
||
|
|
||
|
s3-client:
|
||
|
container_name: minio-client
|
||
|
image: minio/mc:RELEASE.2022-08-28T20-08-11Z
|
||
|
volumes:
|
||
|
- ./minio:/tmp/policies
|
||
|
environment:
|
||
|
MINIO_ACCESS_KEY_ID: ${MINIO_ACCESS_KEY_ID}
|
||
|
MINIO_SECRET_ACCESS_KEY: ${MINIO_SECRET_ACCESS_KEY}
|
||
|
MINIO_ADMIN_USERNAME: ${MINIO_ADMIN_USERNAME}
|
||
|
MINIO_ADMIN_PASSWORD: ${MINIO_ADMIN_PASSWORD}
|
||
|
entrypoint: >
|
||
|
/bin/sh -c "
|
||
|
/usr/bin/mc config host add myminio http://minio:9000 ${MINIO_ADMIN_USERNAME} ${MINIO_ADMIN_PASSWORD};
|
||
|
/usr/bin/mc mb myminio/yonote-bucket;
|
||
|
/usr/bin/mc policy set-json /tmp/policies/minio-bucket-policy.json myminio/yonote-bucket;
|
||
|
/usr/bin/mc admin user add myminio ${MINIO_ACCESS_KEY_ID} ${MINIO_SECRET_ACCESS_KEY};
|
||
|
/usr/bin/mc admin policy add myminio yonote-policy /tmp/policies/minio-user-policy.json;
|
||
|
/usr/bin/mc admin policy set myminio yonote-policy user=${MINIO_ACCESS_KEY_ID};
|
||
|
exit 0;
|
||
|
"
|
||
|
networks:
|
||
|
- yonote-network
|
||
|
depends_on:
|
||
|
- s3
|
||
|
|
||
|
keycloak:
|
||
|
container_name: keycloak
|
||
|
image: images.updates.yonote.ru/yonote-keycloak:${AUTH_VERSION}
|
||
|
ports:
|
||
|
- "8080"
|
||
|
environment:
|
||
|
KC_HOSTNAME: ${KC_YNT_HOST}
|
||
|
OIDC_CLIENT_SECRET: ${KC_CLIENT_SECRET}
|
||
|
YNT_HTTP_PROTOCOL: ${YNT_HTTP_PROTOCOL}
|
||
|
BASENAME_FOR_SUBDOMAIN: ${BASENAME_FOR_SUBDOMAIN}
|
||
|
KEYCLOAK_ADMIN: ${KC_USERNAME}
|
||
|
KEYCLOAK_ADMIN_PASSWORD: ${KC_PASSWORD}
|
||
|
KC_DB: postgres
|
||
|
KC_DB_URL: jdbc:postgresql://postgres:5432/keycloak
|
||
|
KC_DB_USERNAME: ${KC_DB_USERNAME}
|
||
|
KC_DB_PASSWORD: ${KC_DB_PASSWORD}
|
||
|
PROXY_ADDRESS_FORWARDING: true
|
||
|
KC_PROXY_ADDRESS_FORWARDING: true
|
||
|
KC_PROXY: edge
|
||
|
KC_HOSTNAME_STRICT: false
|
||
|
KC_HOSTNAME_STRICT_HTTPS: false
|
||
|
KC_HTTP_ENABLED: true
|
||
|
# KC_HTTPS_ENABLED: false
|
||
|
# KC_HOSTNAME_DEBUG: true
|
||
|
command: start-dev --spi-login-protocol-openid-connect-legacy-logout-redirect-uri=true --import-realm
|
||
|
networks:
|
||
|
- yonote-network
|
||
|
depends_on:
|
||
|
- postgres
|
||
|
|
||
|
nginx:
|
||
|
container_name: nginx
|
||
|
image: nginx
|
||
|
ports:
|
||
|
- 80:80
|
||
|
environment:
|
||
|
BASENAME_FOR_SUBDOMAIN: ${BASENAME_FOR_SUBDOMAIN}
|
||
|
MINIO_YNT_HOST: ${MINIO_YNT_HOST}
|
||
|
MINIO_ADMIN_YNT_HOST: ${MINIO_ADMIN_YNT_HOST}
|
||
|
KC_YNT_HOST: ${KC_YNT_HOST}
|
||
|
DOLLAR: "$"
|
||
|
volumes:
|
||
|
- ./nginx/default.conf.tmpl:/etc/nginx/conf.d/default.conf.tmpl
|
||
|
networks:
|
||
|
yonote-network:
|
||
|
depends_on:
|
||
|
- postgres
|
||
|
- redis
|
||
|
- keycloak
|
||
|
- s3-client
|
||
|
- yonote
|
||
|
command: /bin/bash -c "envsubst < /etc/nginx/conf.d/default.conf.tmpl > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'"
|
||
|
|
||
|
networks:
|
||
|
yonote-network:
|
||
|
name: yonote-internal-network
|
||
|
|
||
|
volumes:
|
||
|
db:
|
||
|
minio:
|