Sergey Shamsuyarov
10/18/2021, 9:05 AMAnna Geller
Sergey Shamsuyarov
10/18/2021, 10:39 AMSergey Shamsuyarov
10/18/2021, 10:40 AMAnna Geller
Sergey Shamsuyarov
10/18/2021, 10:44 AMversion: "3.7"
services:
  postgres:    
    image: "postgres:11.13"
    container_name: postgres
    environment:
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: ${POSTGRES_DB}
    volumes:
      - postgres:/var/lib/postgresql/data
    restart: "always"
    command:
      - "postgres"
      - "-c"
      - "max_connections=150"
    
  hasura:
    image: ${HASURA_IMG}
    container_name: hasura
    command: "graphql-engine serve"
    environment:
      HASURA_GRAPHQL_DATABASE_URL: ${DB_CONNECTION_URL}
      HASURA_GRAPHQL_ENABLE_CONSOLE: "false"
      HASURA_GRAPHQL_SERVER_PORT: "3000"
      HASURA_GRAPHQL_QUERY_PLAN_CACHE_SIZE: 100
      HASURA_GRAPHQL_LOG_LEVEL: "warn"
    restart: "always"
    depends_on:
      - postgres
  
  graphql:
    image: ${PREFECT_IMG}
    container_name: graphql
    command: bash -c "${PREFECT_SERVER_DB_CMD} && python src/prefect_server/services/graphql/server.py"
    environment:
      PREFECT_SERVER_DB_CMD: ${PREFECT_SERVER_DB_CMD:-"echo 'DATABASE MIGRATIONS SKIPPED'"}
      PREFECT_SERVER__DATABASE__CONNECTION_URL: ${DB_CONNECTION_URL}
      PREFECT_SERVER__HASURA__ADMIN_SECRET: ${PREFECT_SERVER__HASURA__ADMIN_SECRET:-hasura-secret-admin-secret}
      PREFECT_SERVER__HASURA__HOST: hasura
    restart: "always"
    depends_on:
      - hasura
  
  towel:
    image: ${PREFECT_IMG}
    container_name: towel
    command: "python src/prefect_server/services/towel/__main__.py"
    environment:
      PREFECT_SERVER__HASURA__ADMIN_SECRET: ${PREFECT_SERVER__HASURA__ADMIN_SECRET:-hasura-secret-admin-secret}
      PREFECT_SERVER__HASURA__HOST: hasura
    restart: "always"
    depends_on:
      - graphql
  
  apollo:
    image: ${PREFECT_APOLLO_IMG}
    container_name: apollo
    #ports:
    #  - "4200:4200"
    command: bash -c "./post-start.sh && npm run serve"
    labels: # Traefik configuration.
      - traefik.http.routers.apollo.rule=Host(`${VIRTUAL_HOST_APOLLO}`)
      - traefik.http.routers.apollo.tls=true
      - traefik.http.routers.apollo.tls.certresolver=lets-encrypt
      - traefik.http.routers.apollo.service=apollo-service
      - traefik.http.services.apollo-service.loadbalancer.server.port=${VIRTUAL_PORT_APOLLO}
    environment:
      HASURA_API_URL: <http://hasura:3000/v1alpha1/graphql>
      PREFECT_API_URL: <http://graphql:4201/graphql/>
      PREFECT_API_HEALTH_URL: <http://graphql:4201/health>
      PREFECT_SERVER__TELEMETRY__ENABLED: "false"
      GRAPHQL_SERVICE_HOST: <http://graphql>
      GRAPHQL_SERVICE_PORT: 4201
    restart: "always"
    depends_on:
      - graphql
  
  ui:
    image: ${PREFECT_UI_IMG}
    container_name: ui
    #ports:
    #  - "8080:8080"
    command: "/intercept.sh"
    environment:
      PREFECT_SERVER__APOLLO_URL: ${VUE_APP_SERVER_URL}
      VUE_APP_BACKEND: ${VUE_APP_BACKEND}
      VUE_APP_ENVIRONMENT: ${VUE_APP_ENVIRONMENT}
      VUE_APP_SERVER_URL: ${VUE_APP_SERVER_URL}
    labels: # Traefik configuration.
      - traefik.http.routers.prefectui.rule=Host(`${VIRTUAL_HOST_UI}`)
      - traefik.http.routers.prefectui.tls=true
      - traefik.http.routers.prefectui.tls.certresolver=lets-encrypt
      - traefik.http.routers.prefectui.service=prefectui-service
      - traefik.http.services.prefectui-service.loadbalancer.server.port=${VIRTUAL_PORT_UI}
    restart: "always"
    depends_on:
      - apollo
volumes:
  postgres:
networks:
  default:
    external:
      name: webproxyAnna Geller
Sergey Shamsuyarov
10/18/2021, 11:08 AMAnna Geller
Sergey Shamsuyarov
10/18/2021, 11:44 AMAnna Geller
NODE_ENVproductionSergey Shamsuyarov
10/18/2021, 3:11 PM