diff --git a/docker-compose-developer-pg.yml b/docker-compose-developer-pg.yml index f6f813f2..f42f17e3 100644 --- a/docker-compose-developer-pg.yml +++ b/docker-compose-developer-pg.yml @@ -1,52 +1,62 @@ -version: '3.2' +version: "3.8" services: - postgres: image: postgres:14.4 - platform: linux/x86_64 - mem_limit: 500m - cpus: 0.5 restart: always ports: - - 5432:5432 + - "5432:5432" environment: POSTGRES_DB: oncall_local_dev POSTGRES_PASSWORD: empty - POSTGRES_INITDB_ARGS: '--encoding=UTF-8' + POSTGRES_INITDB_ARGS: --encoding=UTF-8 + deploy: + resources: + limits: + memory: 500m + cpus: '0.5' redis: image: redis - mem_limit: 100m - cpus: 0.1 restart: always ports: - - 6379:6379 + - "6379:6379" + deploy: + resources: + limits: + memory: 100m + cpus: '0.1' rabbit: image: "rabbitmq:3.7.15-management" - mem_limit: 1000m - cpus: 0.5 environment: RABBITMQ_DEFAULT_USER: "rabbitmq" RABBITMQ_DEFAULT_PASS: "rabbitmq" RABBITMQ_DEFAULT_VHOST: "/" + deploy: + resources: + limits: + memory: 1000m + cpus: '0.5' ports: - - 15672:15672 - - 5672:5672 + - "15672:15672" + - "5672:5672" mysql-to-create-grafana-db: image: mysql:5.7 platform: linux/x86_64 - mem_limit: 500m - cpus: 0.5 command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci restart: always ports: - - 3306:3306 + - "3306:3306" environment: MYSQL_ROOT_PASSWORD: empty MYSQL_DATABASE: grafana + deploy: + resources: + limits: + memory: 500m + cpus: '0.5' healthcheck: test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ] timeout: 20s @@ -55,8 +65,6 @@ services: grafana: image: "grafana/grafana:main" restart: always - mem_limit: 500m - cpus: 0.5 environment: GF_DATABASE_TYPE: mysql GF_DATABASE_HOST: mysql @@ -65,10 +73,15 @@ services: GF_SECURITY_ADMIN_USER: oncall GF_SECURITY_ADMIN_PASSWORD: oncall GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: grafana-oncall-app + deploy: + resources: + limits: + memory: 500m + cpus: '0.5' volumes: - ./grafana-plugin:/var/lib/grafana/plugins/grafana-plugin ports: - - 3000:3000 + - "3000:3000" depends_on: mysql-to-create-grafana-db: condition: service_healthy diff --git a/docker-compose-developer.yml b/docker-compose-developer.yml index dc2f1179..33ef3fd1 100644 --- a/docker-compose-developer.yml +++ b/docker-compose-developer.yml @@ -1,19 +1,21 @@ -version: '3.2' +version: "3.8" services: - mysql: image: mysql:5.7 platform: linux/x86_64 - mem_limit: 500m - cpus: 0.5 command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci restart: always ports: - - 3306:3306 + - "3306:3306" environment: MYSQL_ROOT_PASSWORD: empty MYSQL_DATABASE: oncall_local_dev + deploy: + resources: + limits: + memory: 500m + cpus: '0.5' healthcheck: test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ] timeout: 20s @@ -21,23 +23,29 @@ services: redis: image: redis - mem_limit: 100m - cpus: 0.1 restart: always ports: - - 6379:6379 + - "6379:6379" + deploy: + resources: + limits: + memory: 100m + cpus: '0.1' rabbit: image: "rabbitmq:3.7.15-management" - mem_limit: 1000m - cpus: 0.5 environment: RABBITMQ_DEFAULT_USER: "rabbitmq" RABBITMQ_DEFAULT_PASS: "rabbitmq" RABBITMQ_DEFAULT_VHOST: "/" + deploy: + resources: + limits: + memory: 1000m + cpus: '0.5' ports: - - 15672:15672 - - 5672:5672 + - "15672:15672" + - "5672:5672" mysql-to-create-grafana-db: image: mysql:5.7 @@ -50,8 +58,6 @@ services: grafana: image: "grafana/grafana:main" restart: always - mem_limit: 500m - cpus: 0.5 environment: GF_DATABASE_TYPE: mysql GF_DATABASE_HOST: mysql @@ -60,10 +66,15 @@ services: GF_SECURITY_ADMIN_USER: oncall GF_SECURITY_ADMIN_PASSWORD: oncall GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: grafana-oncall-app + deploy: + resources: + limits: + memory: 500m + cpus: '0.5' volumes: - ./grafana-plugin:/var/lib/grafana/plugins/grafana-plugin ports: - - 3000:3000 + - "3000:3000" depends_on: mysql: condition: service_healthy diff --git a/docker-compose.yml b/docker-compose.yml index 9caaac8a..45ae8207 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,28 +1,36 @@ +version: "3.8" + +x-environment: + &oncall-environment + BASE_URL: $DOMAIN + SECRET_KEY: $SECRET_KEY + RABBITMQ_USERNAME: "rabbitmq" + RABBITMQ_PASSWORD: $RABBITMQ_PASSWORD + RABBITMQ_HOST: "rabbitmq" + RABBITMQ_PORT: "5672" + RABBITMQ_DEFAULT_VHOST: "/" + MYSQL_PASSWORD: $MYSQL_PASSWORD + MYSQL_DB_NAME: oncall_hobby + MYSQL_USER: ${MYSQL_USER:-root} + MYSQL_HOST: ${MYSQL_HOST:-mysql} + MYSQL_PORT: 3306 + REDIS_URI: redis://redis:6379/0 + DJANGO_SETTINGS_MODULE: settings.hobby + CELERY_WORKER_QUEUE: "default,critical,long,slack,telegram,webhook,retry,celery" + CELERY_WORKER_CONCURRENCY: "1" + CELERY_WORKER_MAX_TASKS_PER_CHILD: "100" + CELERY_WORKER_SHUTDOWN_INTERVAL: "65m" + CELERY_WORKER_BEAT_ENABLED: "True" + services: engine: image: grafana/oncall restart: always ports: - - 8080:8080 + - "8080:8080" command: > sh -c "uwsgi --ini uwsgi.ini" - environment: - BASE_URL: $DOMAIN - SECRET_KEY: $SECRET_KEY - RABBITMQ_USERNAME: "rabbitmq" - RABBITMQ_PASSWORD: $RABBITMQ_PASSWORD - RABBITMQ_HOST: "rabbitmq" - RABBITMQ_PORT: "5672" - RABBITMQ_DEFAULT_VHOST: "/" - MYSQL_PASSWORD: $MYSQL_PASSWORD - MYSQL_DB_NAME: oncall_hobby - MYSQL_USER: ${MYSQL_USER:-root} - MYSQL_HOST: ${MYSQL_HOST:-mysql} - MYSQL_PORT: 3306 - REDIS_URI: redis://redis:6379/0 - DJANGO_SETTINGS_MODULE: settings.hobby - OSS: "True" - CELERY_WORKER_QUEUE: "default,critical,long,slack,telegram,webhook,retry,celery" + environment: *oncall-environment depends_on: mysql: condition: service_healthy @@ -37,27 +45,7 @@ services: image: grafana/oncall restart: always command: sh -c "./celery_with_exporter.sh" - environment: - BASE_URL: $DOMAIN - SECRET_KEY: $SECRET_KEY - RABBITMQ_USERNAME: "rabbitmq" - RABBITMQ_PASSWORD: $RABBITMQ_PASSWORD - RABBITMQ_HOST: "rabbitmq" - RABBITMQ_PORT: "5672" - RABBITMQ_DEFAULT_VHOST: "/" - MYSQL_PASSWORD: $MYSQL_PASSWORD - MYSQL_DB_NAME: oncall_hobby - MYSQL_USER: ${MYSQL_USER:-root} - MYSQL_HOST: ${MYSQL_HOST:-mysql} - MYSQL_PORT: 3306 - REDIS_URI: redis://redis:6379/0 - DJANGO_SETTINGS_MODULE: settings.hobby - OSS: "True" - CELERY_WORKER_QUEUE: "default,critical,long,slack,telegram,webhook,retry,celery" - CELERY_WORKER_CONCURRENCY: "1" - CELERY_WORKER_MAX_TASKS_PER_CHILD: "100" - CELERY_WORKER_SHUTDOWN_INTERVAL: "65m" - CELERY_WORKER_BEAT_ENABLED: "True" + environment: *oncall-environment depends_on: mysql: condition: service_healthy @@ -71,23 +59,7 @@ services: oncall_db_migration: image: grafana/oncall command: python manage.py migrate --noinput - environment: - BASE_URL: $DOMAIN - SECRET_KEY: $SECRET_KEY - RABBITMQ_USERNAME: "rabbitmq" - RABBITMQ_PASSWORD: $RABBITMQ_PASSWORD - RABBITMQ_HOST: "rabbitmq" - RABBITMQ_PORT: "5672" - RABBITMQ_DEFAULT_VHOST: "/" - MYSQL_PASSWORD: $MYSQL_PASSWORD - MYSQL_DB_NAME: oncall_hobby - MYSQL_USER: ${MYSQL_USER:-root} - MYSQL_HOST: ${MYSQL_HOST:-mysql} - MYSQL_PORT: 3306 - REDIS_URI: redis://redis:6379/0 - DJANGO_SETTINGS_MODULE: settings.hobby - OSS: "True" - CELERY_WORKER_QUEUE: "default,critical,long,slack,telegram,webhook,retry,celery" + environment: *oncall-environment depends_on: mysql: condition: service_healthy @@ -97,8 +69,6 @@ services: mysql: image: mysql:5.7 platform: linux/x86_64 - mem_limit: 500m - cpus: 0.5 command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci restart: always expose: @@ -108,6 +78,11 @@ services: environment: MYSQL_ROOT_PASSWORD: $MYSQL_PASSWORD MYSQL_DATABASE: oncall_hobby + deploy: + resources: + limits: + memory: 500m + cpus: '0.5' healthcheck: test: "mysql -uroot -p$MYSQL_PASSWORD oncall_hobby -e 'select 1'" timeout: 20s @@ -115,24 +90,30 @@ services: redis: image: redis - mem_limit: 100m - cpus: 0.1 restart: always expose: - 6379 + deploy: + resources: + limits: + memory: 100m + cpus: '0.1' rabbitmq: image: "rabbitmq:3.7.15-management" restart: always hostname: rabbitmq - mem_limit: 1000m - cpus: 0.5 volumes: - rabbitmqdata:/var/lib/rabbitmq environment: RABBITMQ_DEFAULT_USER: "rabbitmq" RABBITMQ_DEFAULT_PASS: $RABBITMQ_PASSWORD RABBITMQ_DEFAULT_VHOST: "/" + deploy: + resources: + limits: + memory: 1000m + cpus: '0.5' healthcheck: test: rabbitmq-diagnostics -q ping interval: 30s @@ -152,10 +133,8 @@ services: grafana: image: "grafana/grafana:9.0.0-beta3" restart: always - mem_limit: 500m ports: - - 3000:3000 - cpus: 0.5 + - "3000:3000" environment: GF_DATABASE_TYPE: mysql GF_DATABASE_HOST: ${MYSQL_HOST:-mysql} @@ -165,6 +144,11 @@ services: GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD:?err} GF_PLUGINS_ALLOW_LOADING_UNSIGNED_PLUGINS: grafana-oncall-app GF_INSTALL_PLUGINS: grafana-oncall-app + deploy: + resources: + limits: + memory: 500m + cpus: '0.5' depends_on: mysql_to_create_grafana_db: condition: service_completed_successfully