|  | @@ -0,0 +1,142 @@
 | 
	
		
			
				|  |  | +networks:
 | 
	
		
			
				|  |  | +  traefik-public:
 | 
	
		
			
				|  |  | +    external: true
 | 
	
		
			
				|  |  | +services:
 | 
	
		
			
				|  |  | +  backend:
 | 
	
		
			
				|  |  | +    build:
 | 
	
		
			
				|  |  | +      args:
 | 
	
		
			
				|  |  | +        INSTALL_DEV: "true"
 | 
	
		
			
				|  |  | +        INSTALL_JUPYTER: "false"
 | 
	
		
			
				|  |  | +      context: /root/video-maker/backend
 | 
	
		
			
				|  |  | +      dockerfile: backend.dockerfile
 | 
	
		
			
				|  |  | +    command: /start-reload.sh
 | 
	
		
			
				|  |  | +    deploy:
 | 
	
		
			
				|  |  | +      labels:
 | 
	
		
			
				|  |  | +        traefik.constraint-label-stack: cloud.choozmo.com
 | 
	
		
			
				|  |  | +        traefik.enable: "true"
 | 
	
		
			
				|  |  | +        traefik.http.routers.ai-anchor-com-backend-http.rule: PathPrefix(`/api`) ||
 | 
	
		
			
				|  |  | +          PathPrefix(`/docs`) || PathPrefix(`/redoc`)
 | 
	
		
			
				|  |  | +        traefik.http.services.ai-anchor-com-backend.loadbalancer.server.port: '80'
 | 
	
		
			
				|  |  | +    environment:
 | 
	
		
			
				|  |  | +      BACKEND_CORS_ORIGINS: '["https://cloud.choozmo:8080", "http://cloud.choozmo.com:8080",
 | 
	
		
			
				|  |  | +        "https://cloud.choozmo.com", "http://cloud.choozmo.com","http://172.105.219.42",
 | 
	
		
			
				|  |  | +        "http://local.ai-anchor.com:5173", "http://local.ai-anchor.com:8080", "http://localhost",
 | 
	
		
			
				|  |  | +        "http://localhost:4200", "http://localhost:3000", "http://localhost:5173",
 | 
	
		
			
				|  |  | +        "http://localhost:8080", "https://localhost", "https://localhost:4200", "https://localhost:3000",
 | 
	
		
			
				|  |  | +        "https://localhost:8080", "http://dev.ai-anchor.com:3000", "http://dev.ai-anchor.com:5173",
 | 
	
		
			
				|  |  | +        "http://dev.ai-anchor.com:8080", "https://stag.ai-anchor.com", "https://ai-anchor.com",
 | 
	
		
			
				|  |  | +        "http://local.dockertoolbox.tiangolo.com", "http://localhost.tiangolo.com"]'
 | 
	
		
			
				|  |  | +      BACKEND_VIDEO_STORAGE: backend_storage/videos
 | 
	
		
			
				|  |  | +      BACKEND_ZIP_STORAGE: backend_storage/zips
 | 
	
		
			
				|  |  | +      CELERY_VIDEO_STORAGE: celery_storage/videos
 | 
	
		
			
				|  |  | +      CELERY_ZIP_STORAGE: celery_storage/zips
 | 
	
		
			
				|  |  | +      DOCKER_IMAGE_BACKEND: backend
 | 
	
		
			
				|  |  | +      DOCKER_IMAGE_CELERYWORKER: gpuceleryworker
 | 
	
		
			
				|  |  | +      DOCKER_IMAGE_FRONTEND: frontend
 | 
	
		
			
				|  |  | +      DOMAIN: cloud.choozmo.com:8080
 | 
	
		
			
				|  |  | +      EMAILS_FROM_EMAIL: info@ai-anchor.com
 | 
	
		
			
				|  |  | +      FIRST_SUPERUSER: admin@ai-anchor.com
 | 
	
		
			
				|  |  | +      FIRST_SUPERUSER_PASSWORD: password
 | 
	
		
			
				|  |  | +      FLOWER_BASIC_AUTH: admin:password
 | 
	
		
			
				|  |  | +      LOCAL_VIDEO_STORAGE: local_storage/videos
 | 
	
		
			
				|  |  | +      LOCAL_ZIP_STORAGE: local_storage/zips
 | 
	
		
			
				|  |  | +      MEMBERSHIP_STATUS: '["normal", "infinite"]'
 | 
	
		
			
				|  |  | +      PGADMIN_DEFAULT_EMAIL: admin@ai-anchor.com
 | 
	
		
			
				|  |  | +      PGADMIN_DEFAULT_PASSWORD: password
 | 
	
		
			
				|  |  | +      PGADMIN_LISTEN_PORT: '5050'
 | 
	
		
			
				|  |  | +      POSTGRES_DB: app
 | 
	
		
			
				|  |  | +      POSTGRES_PASSWORD: password
 | 
	
		
			
				|  |  | +      POSTGRES_SERVER: db
 | 
	
		
			
				|  |  | +      POSTGRES_USER: postgres
 | 
	
		
			
				|  |  | +      PROGRESS_STATE: '["waiting", "processing", "completed", "failed"]'
 | 
	
		
			
				|  |  | +      PROJECT_NAME: AI anchor
 | 
	
		
			
				|  |  | +      SECRET_KEY: 1df1f2180c7b2550e76a8ccf5e67a76e5321d8c2d3fee4a725f8b80baf9a0c91
 | 
	
		
			
				|  |  | +      SENTRY_DSN: ''
 | 
	
		
			
				|  |  | +      SERVER_ADDRESS: http://localhost
 | 
	
		
			
				|  |  | +      SERVER_HOST: http://cloud.choozmo.com
 | 
	
		
			
				|  |  | +      SERVER_NAME: cloud.choozmo.com
 | 
	
		
			
				|  |  | +      SMTP_HOST: smtp.gmail.com
 | 
	
		
			
				|  |  | +      SMTP_PASSWORD: hlmaxzjnvpeaulhw
 | 
	
		
			
				|  |  | +      SMTP_PORT: '587'
 | 
	
		
			
				|  |  | +      SMTP_TLS: "True"
 | 
	
		
			
				|  |  | +      SMTP_USER: verify@choozmo.com
 | 
	
		
			
				|  |  | +      STACK_NAME: ai-anchor-com
 | 
	
		
			
				|  |  | +      TRAEFIK_PUBLIC_NETWORK: traefik-public
 | 
	
		
			
				|  |  | +      TRAEFIK_PUBLIC_TAG: traefik-public
 | 
	
		
			
				|  |  | +      TRAEFIK_TAG: ai-anchor.com
 | 
	
		
			
				|  |  | +      USERS_OPEN_REGISTRATION: "True"
 | 
	
		
			
				|  |  | +    image: backend:cloud
 | 
	
		
			
				|  |  | +    labels:
 | 
	
		
			
				|  |  | +      traefik.constraint-label-stack: cloud.choozmo.com
 | 
	
		
			
				|  |  | +      traefik.enable: "true"
 | 
	
		
			
				|  |  | +      traefik.http.routers.ai-anchor-com-backend-http.rule: PathPrefix(`/api`) ||
 | 
	
		
			
				|  |  | +        PathPrefix(`/docs`) || PathPrefix(`/redoc`)
 | 
	
		
			
				|  |  | +      traefik.http.services.ai-anchor-com-backend.loadbalancer.server.port: '80'
 | 
	
		
			
				|  |  | +    volumes:
 | 
	
		
			
				|  |  | +    - /root/video-maker/backend/app:/app:rw
 | 
	
		
			
				|  |  | +    - /backend_storage/videos:/app/backend_storage/videos:rw
 | 
	
		
			
				|  |  | +    - /backend_storage/zips:/app/backend_storage/zips:rw
 | 
	
		
			
				|  |  | +  frontend:
 | 
	
		
			
				|  |  | +    build:
 | 
	
		
			
				|  |  | +      args:
 | 
	
		
			
				|  |  | +        FRONTEND_ENV: dev
 | 
	
		
			
				|  |  | +      context: /root/video-maker/frontend
 | 
	
		
			
				|  |  | +    deploy:
 | 
	
		
			
				|  |  | +      labels:
 | 
	
		
			
				|  |  | +        traefik.constraint-label-stack: cloud.choozmo.com
 | 
	
		
			
				|  |  | +        traefik.enable: "true"
 | 
	
		
			
				|  |  | +        traefik.http.routers.ai-anchor-com-frontend-http.rule: PathPrefix(`/`)
 | 
	
		
			
				|  |  | +        traefik.http.services.ai-anchor-com-frontend.loadbalancer.server.port: '80'
 | 
	
		
			
				|  |  | +    image: frontend:cloud
 | 
	
		
			
				|  |  | +    labels:
 | 
	
		
			
				|  |  | +      traefik.constraint-label-stack: cloud.choozmo.com
 | 
	
		
			
				|  |  | +      traefik.enable: "true"
 | 
	
		
			
				|  |  | +      traefik.http.routers.ai-anchor-com-frontend-http.rule: PathPrefix(`/`)
 | 
	
		
			
				|  |  | +      traefik.http.services.ai-anchor-com-frontend.loadbalancer.server.port: '80'
 | 
	
		
			
				|  |  | +  proxy:
 | 
	
		
			
				|  |  | +    command:
 | 
	
		
			
				|  |  | +    - --providers.docker
 | 
	
		
			
				|  |  | +    - --providers.docker.constraints=Label(`traefik.constraint-label-stack`, `cloud.choozmo.com`)
 | 
	
		
			
				|  |  | +    - --providers.docker.exposedbydefault=false
 | 
	
		
			
				|  |  | +    - --accesslog
 | 
	
		
			
				|  |  | +    - --log
 | 
	
		
			
				|  |  | +    - --api
 | 
	
		
			
				|  |  | +    - --api.insecure=true
 | 
	
		
			
				|  |  | +    deploy:
 | 
	
		
			
				|  |  | +      labels:
 | 
	
		
			
				|  |  | +        traefik.constraint-label: traefik-public
 | 
	
		
			
				|  |  | +        traefik.docker.network: traefik-public
 | 
	
		
			
				|  |  | +        traefik.enable: "true"
 | 
	
		
			
				|  |  | +        traefik.http.middlewares.ai-anchor-com-https-redirect.redirectscheme.permanent: "true"
 | 
	
		
			
				|  |  | +        traefik.http.middlewares.ai-anchor-com-https-redirect.redirectscheme.scheme: https
 | 
	
		
			
				|  |  | +        traefik.http.middlewares.ai-anchor-com-www-redirect.redirectregex.regex: ^https?://(www.)?(cloud.choozmo.com)/(.*)
 | 
	
		
			
				|  |  | +        traefik.http.middlewares.ai-anchor-com-www-redirect.redirectregex.replacement: https://cloud.choozmo.com/$${3}
 | 
	
		
			
				|  |  | +        traefik.http.routers.ai-anchor-com-proxy-http.entrypoints: http
 | 
	
		
			
				|  |  | +        traefik.http.routers.ai-anchor-com-proxy-http.middlewares: ai-anchor-com-www-redirect,ai-anchor-com-https-redirect
 | 
	
		
			
				|  |  | +        traefik.http.routers.ai-anchor-com-proxy-http.rule: Host(`cloud.choozmo.com`)
 | 
	
		
			
				|  |  | +          || Host(`www.cloud.choozmo.com`)
 | 
	
		
			
				|  |  | +        traefik.http.routers.ai-anchor-com-proxy-https.entrypoints: https
 | 
	
		
			
				|  |  | +        traefik.http.routers.ai-anchor-com-proxy-https.middlewares: ai-anchor-com-www-redirect
 | 
	
		
			
				|  |  | +        traefik.http.routers.ai-anchor-com-proxy-https.rule: Host(`cloud.choozmo.com`)
 | 
	
		
			
				|  |  | +          || Host(`www.cloud.choozmo.com`)
 | 
	
		
			
				|  |  | +        traefik.http.routers.ai-anchor-com-proxy-https.tls: "true"
 | 
	
		
			
				|  |  | +        traefik.http.routers.ai-anchor-com-proxy-https.tls.certresolver: le
 | 
	
		
			
				|  |  | +        traefik.http.services.ai-anchor-com-proxy.loadbalancer.server.port: '80'
 | 
	
		
			
				|  |  | +      placement:
 | 
	
		
			
				|  |  | +        constraints:
 | 
	
		
			
				|  |  | +        - node.role == manager
 | 
	
		
			
				|  |  | +    image: traefik:v2.9
 | 
	
		
			
				|  |  | +    labels:
 | 
	
		
			
				|  |  | +      traefik.enable: "true"
 | 
	
		
			
				|  |  | +      traefik.http.routers.ai-anchor-com-traefik-public-http.rule: Host(`cloud.choozmo.com`)
 | 
	
		
			
				|  |  | +      traefik.http.services.ai-anchor-com-traefik-public.loadbalancer.server.port: '80'
 | 
	
		
			
				|  |  | +    networks:
 | 
	
		
			
				|  |  | +      default: {}
 | 
	
		
			
				|  |  | +      traefik-public: {}
 | 
	
		
			
				|  |  | +    ports:
 | 
	
		
			
				|  |  | +    - published: 80
 | 
	
		
			
				|  |  | +      target: 80
 | 
	
		
			
				|  |  | +    volumes:
 | 
	
		
			
				|  |  | +    - /var/run/docker.sock:/var/run/docker.sock:rw
 | 
	
		
			
				|  |  | +version: '3.3'
 | 
	
		
			
				|  |  | +
 |