autowp/autowp

View on GitHub
docker-compose.yml

Summary

Maintainability
Test Coverage
version: "3.3"
services:
  router:
    image: nginx:1-alpine
    container_name: autowp_test_router
    restart: always
    volumes:
    - ./router.conf:/etc/nginx/nginx.conf:ro
    - ./localhost.crt:/localhost.crt
    - ./localhost.key:/localhost.key
    depends_on:
    - backend
    - frontend
    - goautowp-serve-public
    - keycloak
    ports:
    - "80:80"
    - "443:443"

  backend-nginx:
    image: registry.pereslegin.ru/autowp/backend:nginx-v1.4.0
    container_name: autowp_test_backend_nginx
    restart: always
    environment:
      FASTCGI: backend:9000
    depends_on:
      - backend

  backend:
    image: registry.pereslegin.ru/autowp/backend:v1.4.0
    container_name: autowp_test_backend
    restart: always
    environment:
      AUTOWP_TWITTER_USERNAME: ""
      AUTOWP_TWITTER_OAUTH_KEY: ""
      AUTOWP_TWITTER_OAUTH_SECRET: ""
      AUTOWP_TWITTER_TOKEN_OAUTH: ""
      AUTOWP_TWITTER_TOKEN_OAUTH_SECRET: ""
      AUTOWP_FACEBOOK_APP_ID: ""
      AUTOWP_FACEBOOK_APP_SECRET: ""
      AUTOWP_FACEBOOK_PAGE_ACCESS_TOKEN: ""
      AUTOWP_VK_TOKEN: ""
      SONARCLOUD_TOKEN: ${SONARCLOUD_TOKEN}
    volumes:
    - ./config:/app/config
    - ./data:/app/data
    - ./cache:/app/cache
    - ./module:/app/module
    - ./public_html:/app/public_html
    - ./vendor:/app/vendor
    - ./etc/nginx/conf.d:/etc/nginx/conf.d
    - ./etc/nginx/sites-available:/etc/nginx/sites-available
    - ./composer.json:/app/composer.json
    - ./composer.lock:/app/composer.lock
    - ./install-dev.sh:/app/install-dev.sh
    - ./install-dev-db.sh:/app/install-dev-db.sh
    - ./start.sh:/app/start.sh
    depends_on:
    - redis
    - mysql
    - rabbitmq
    - goautowp-serve-private
    - minio
    - createbuckets

  redis:
    image: redis:alpine
    container_name: autowp_test_redis
    restart: always
    expose:
    - "6379"

  mysql:
    image: mysql:8
    container_name: autowp_test_mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: autowp_test
      MYSQL_USER: autowp_test
      MYSQL_PASSWORD: test
    volumes:
    - "./mysql:/var/lib/mysql"
    - "./mysql.conf.d:/etc/mysql/conf.d"
    expose:
    - "3306"
    ports:
    - "3306:3306"

  frontend:
    image: registry.pereslegin.ru/autowp/frontend:v1.124.1
    container_name: autowp_test_frontend
    restart: always
    volumes:
    - "./frontend/be-BY:/usr/share/nginx/html/be-BY"
    - "./frontend/en-GB:/usr/share/nginx/html/en-GB"
    - "./frontend/fr:/usr/share/nginx/html/fr"
    - "./frontend/pt-BR:/usr/share/nginx/html/pt-BR"
    - "./frontend/ru:/usr/share/nginx/html/ru"
    - "./frontend/uk:/usr/share/nginx/html/uk"
    - "./frontend/zh-CN:/usr/share/nginx/html/zh-CN"
    - "./frontend/es:/usr/share/nginx/html/es"
    - "./frontend/it:/usr/share/nginx/html/it"
    - "./frontend/he:/usr/share/nginx/html/he"
    - "../autowp-frontend/etc/nginx/nginx.conf:/etc/nginx/nginx.conf"
    - "./hostmap:/etc/nginx/hostmap:ro"
    user: "101:101"

  rabbitmq:
    image: rabbitmq:management-alpine
    container_name: autowp_test_rabbitmq
    ports:
    - "4369:4369"
    - "5671:5671"
    - "5672:5672"
    - "15671:15671"
    - "15672:15672"
    - "15691:15691"
    - "15692:15692"
    - "25672:25672"

  traffic-postgres:
    image: postgres:13-alpine
    container_name: autowp_test_traffic_postgres
    restart: always
    environment:
      - POSTGRES_DB=traffic
      - POSTGRES_USER=traffic
      - POSTGRES_PASSWORD=password

  goautowp-serve-public:
    image: registry.pereslegin.ru/autowp/goautowp:v1.71.0
    container_name: autowp_test_goautowp_serve_public
    restart: always
    command: serve-public
    depends_on:
      - rabbitmq
      - mysql
      - traffic-postgres
      - keycloak
      - redis
    volumes:
      - "./goautowp/config.yaml:/config.yaml:ro"
      - "./module/Application/config/model.conf:/model.conf:ro"
      - "./module/Application/config/policy.csv:/policy.csv:ro"

  goautowp-serve-grpc:
    image: registry.pereslegin.ru/autowp/goautowp:v1.71.0
    container_name: autowp_test_goautowp_serve_grpc
    restart: always
    command: serve-grpc
    depends_on:
      - rabbitmq
      - mysql
      - traffic-postgres
      - keycloak
      - redis
    volumes:
      - "./goautowp/config.yaml:/config.yaml:ro"
      - "./module/Application/config/model.conf:/model.conf:ro"
      - "./module/Application/config/policy.csv:/policy.csv:ro"

  goautowp-serve-private:
    image: registry.pereslegin.ru/autowp/goautowp:v1.71.0
    container_name: autowp_test_goautowp_serve_private
    restart: always
    command: serve-private
    depends_on:
      - rabbitmq
      - mysql
      - traffic-postgres
      - keycloak
      - redis
    volumes:
      - "./goautowp/config.yaml:/config.yaml:ro"
      - "./module/Application/config/model.conf:/model.conf:ro"
      - "./module/Application/config/policy.csv:/policy.csv:ro"

  goautowp-listen-df-amqp:
    image: registry.pereslegin.ru/autowp/goautowp:v1.71.0
    container_name: autowp_test_goautowp_listen_df_amqp
    restart: always
    command: listen-df-amqp
    depends_on:
      - rabbitmq
      - mysql
      - traffic-postgres
      - keycloak
      - redis
    volumes:
      - "./goautowp/config.yaml:/config.yaml:ro"
      - "./module/Application/config/model.conf:/model.conf:ro"
      - "./module/Application/config/policy.csv:/policy.csv:ro"

  goautowp-listen-monitoring-amqp:
    image: registry.pereslegin.ru/autowp/goautowp:v1.71.0
    container_name: autowp_test_goautowp_listen_monitoring_amqp
    restart: always
    command: listen-monitoring-amqp
    depends_on:
      - rabbitmq
      - mysql
      - traffic-postgres
      - keycloak
      - redis
    volumes:
      - "./goautowp/config.yaml:/config.yaml:ro"
      - "./module/Application/config/model.conf:/model.conf:ro"
      - "./module/Application/config/policy.csv:/policy.csv:ro"

  goautowp-autoban:
    image: registry.pereslegin.ru/autowp/goautowp:v1.71.0
    container_name: autowp_test_goautowp_autoban
    restart: always
    command: autoban
    depends_on:
      - rabbitmq
      - mysql
      - traffic-postgres
      - keycloak
      - redis
    volumes:
      - "./goautowp/config.yaml:/config.yaml:ro"
      - "./module/Application/config/model.conf:/model.conf:ro"
      - "./module/Application/config/policy.csv:/policy.csv:ro"

  minio:
    image: quay.io/minio/minio
    container_name: autowp_test_minio
    restart: always
    environment:
      MINIO_ROOT_USER: "AKIAIOSFODNN7EXAMPLE"
      MINIO_ROOT_PASSWORD: "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
    ports:
      - "19000:9000"
      - "9001:9001"
    volumes:
      - "./minio/data:/data"
    command: server --console-address ":9001" /data

  createbuckets:
    image: minio/mc
    container_name: autowp_test_createbuckets
    depends_on:
      - minio
    entrypoint: >
      /bin/sh -c "
      while ! /usr/bin/mc config host add autowp http://minio:9000 AKIAIOSFODNN7EXAMPLE wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY;
        do echo 'Wait minio to startup...' && sleep 1;
      done;
      /usr/bin/mc mb autowp/format;
      /usr/bin/mc anonymous set download autowp/format;
      /usr/bin/mc mb autowp/user;
      /usr/bin/mc anonymous set download autowp/user;
      /usr/bin/mc mb autowp/brand;
      /usr/bin/mc anonymous set download autowp/brand;
      /usr/bin/mc mb autowp/picture;
      /usr/bin/mc anonymous set download autowp/picture;
      /usr/bin/mc mb autowp/files;
      /usr/bin/mc anonymous set download autowp/files;
      exit 0;
      "

  keycloak:
    image: bitnami/keycloak:20
    container_name: autowp_test_keycloak
    restart: always
    environment:
      KEYCLOAK_ADMIN_USER: admin
      KEYCLOAK_ADMIN_PASSWORD: password
      KEYCLOAK_MANAGEMENT_USER: manager
      KEYCLOAK_MANAGEMENT_PASSWORD: password
      KEYCLOAK_DATABASE_HOST: postgres-keycloak
      KEYCLOAK_DATABASE_NAME: keycloak
      KEYCLOAK_DATABASE_USER: keycloak
      KEYCLOAK_DATABASE_PASSWORD: password
      KC_HTTP_RELATIVE_PATH: /auth
      KEYCLOAK_EXTRA_ARGS: -Dkeycloak.import=/opt/keycloak/data/import/realm.json
    volumes:
      - ./keycloak/realm.json:/opt/keycloak/data/import/realm.json
    ports:
      - "8081:8080"
    depends_on:
      - postgres-keycloak

  postgres-keycloak:
    image: postgres:13-alpine
    container_name: autowp_test_postgres_keycloak
    restart: always
    environment:
      - POSTGRES_DB=keycloak
      - POSTGRES_USER=keycloak
      - POSTGRES_PASSWORD=password
    ports:
      - "5433:5432"