diff --git a/docker-compose.yml b/docker-compose.yml index f7af95f..514d39f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,13 +3,15 @@ services: db: restart: always image: postgres:14-alpine - shm_size: 256mb + shm_size: 2gb + command: postgres -c "max_connections=200" -c "shared_buffers=2GB" -c "effective_cache_size=6GB" -c "maintenance_work_mem=512MB" -c "checkpoint_completion_target=0.9" -c "wal_buffers=16MB" -c "default_statistics_target=100" -c "random_page_cost=1.1" -c "effective_io_concurrency=200" -c "work_mem=5242kB" -c "min_wal_size=1GB" -c "max_wal_size=4GB" -c "max_worker_processes=4" -c "max_parallel_workers_per_gather=2" -c "max_parallel_workers=4" -c "max_parallel_maintenance_workers=2" networks: - internal_network healthcheck: test: ['CMD', 'pg_isready', '-U', 'postgres'] volumes: - ./postgres14:/var/lib/postgresql/data + - ./backups:/backups environment: - 'POSTGRES_HOST_AUTH_METHOD=trust' @@ -31,12 +33,14 @@ services: - "cluster.name=es-mastodon" - "discovery.type=single-node" - "bootstrap.memory_lock=true" + - "cluster.routing.allocation.disk.watermark.low=0.9" + - "cluster.routing.allocation.disk.watermark.high=0.94" networks: - - internal_network + - internal_network healthcheck: test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"] volumes: - - elasticsearch + - elasticsearch:/usr/share/elasticsearch/data ulimits: memlock: soft: -1 @@ -44,7 +48,7 @@ services: web: build: . - image: porttown.solarpunk.moe/mastodon + image: git.solarpunk.moe/solarpunk/mastodon restart: always env_file: .env.production command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000" @@ -66,7 +70,7 @@ services: streaming: build: . - image: porttown.solarpunk.moe/mastodon + image: git.solarpunk.moe/solarpunk/mastodon:latest restart: always env_file: .env.production command: node ./streaming @@ -82,13 +86,75 @@ services: depends_on: - db - redis - - sidekiq: + + sidekiq-mailers: build: . - image: porttown.solarpunk.moe/mastodon + image: git.solarpunk.moe/solarpunk/mastodon:latest restart: always env_file: .env.production - command: bundle exec sidekiq + command: bundle exec sidekiq -c 4 -q mailers -q scheduler + environment: + - DB_POOL=4 + depends_on: + - db + - redis + networks: + - external_network + - internal_network + - mail + volumes: + - ./public/system:/mastodon/public/system + healthcheck: + test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"] + + sidekiq-ingress-pull-push-default: + build: . + image: git.solarpunk.moe/solarpunk/mastodon:latest + restart: always + env_file: .env.production + command: bundle exec sidekiq -c 25 -q ingress -q pull -q push -q default + environment: + - DB_POOL=4 + depends_on: + - db + - redis + networks: + - external_network + - internal_network + - mail + volumes: + - ./public/system:/mastodon/public/system + healthcheck: + test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"] + + sidekiq-default-push-pull: + build: . + image: git.solarpunk.moe/solarpunk/mastodon:latest + restart: always + env_file: .env.production + command: bundle exec sidekiq -c 25 -q default -q ingress -q push -q pull + environment: + - DB_POOL=25 + depends_on: + - db + - redis + networks: + - external_network + - internal_network + - mail + volumes: + - ./public/system:/mastodon/public/system + healthcheck: + test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"] + + sidekiq-pull-push-default: + build: . + image: git.solarpunk.moe/solarpunk/mastodon:latest + restart: always + env_file: .env.production + command: bundle exec sidekiq -c 25 -q pull -q push -q default -q ingress + environment: + - DB_POOL=25 depends_on: - db - redis