summaryrefslogtreecommitdiffstats
path: root/mastodon/docker-compose.yml
diff options
context:
space:
mode:
Diffstat (limited to 'mastodon/docker-compose.yml')
-rw-r--r--mastodon/docker-compose.yml130
1 files changed, 130 insertions, 0 deletions
diff --git a/mastodon/docker-compose.yml b/mastodon/docker-compose.yml
new file mode 100644
index 0000000..bdefc66
--- /dev/null
+++ b/mastodon/docker-compose.yml
@@ -0,0 +1,130 @@
+version: '3.5'
+services:
+ db:
+ restart: always
+ image: postgres:14-alpine
+ container_name: mastodon-db
+ shm_size: 512mb
+ command: postgres -c 'shared_preload_libraries=pg_stat_statements' -c 'pg_stat_statements.track=all'
+ networks:
+ - internal_network
+ healthcheck:
+ test: ['CMD', 'pg_isready', '-U', 'postgres']
+ volumes:
+ - './postgres:/var/lib/postgresql/data'
+ environment:
+ - 'POSTGRES_HOST_AUTH_METHOD=trust'
+
+ redis:
+ restart: always
+ image: redis:alpine
+ container_name: mastodon-redis
+ networks:
+ - internal_network
+ healthcheck:
+ test: ['CMD', 'redis-cli', 'ping']
+ volumes:
+ - './redis:/data'
+
+ elasticsearch:
+ restart: always
+ image: docker.elastic.co/elasticsearch/elasticsearch:7.17.4
+ container_name: elasticsearch
+ environment:
+ #- 'ES_JAVA_OPTS=-Xms2g -Xmx2g -Des.enforce.bootstrap.checks=true'
+ - 'ES_JAVA_OPTS=-Xms2g -Xmx2g'
+ - 'xpack.license.self_generated.type=basic'
+ - 'xpack.security.enabled=false'
+ - 'xpack.watcher.enabled=false'
+ - 'xpack.graph.enabled=false'
+ - 'xpack.ml.enabled=false'
+ - 'bootstrap.memory_lock=true'
+ - 'cluster.name=es-mastodon'
+ - 'discovery.type=single-node'
+ - 'thread_pool.write.queue_size=1000'
+ - 'ingest.geoip.downloader.enabled=false'
+ networks:
+ - external_network
+ - internal_network
+ healthcheck:
+ test: ['CMD-SHELL', 'curl --silent --fail localhost:9200/_cluster/health || exit 1']
+ volumes:
+ - ./elasticsearch:/usr/share/elasticsearch/data
+ ulimits:
+ memlock:
+ soft: -1
+ hard: -1
+ nofile:
+ soft: 65536
+ hard: 65536
+
+ web:
+ image: ghcr.io/glitch-soc/mastodon
+ container_name: mastodon-web
+ restart: always
+ env_file: mastodon.env
+ environment:
+ - PUID=1000
+ - PGID=1000
+ - TZ=Asia/Shanghai
+ - RAILS_ENV=production
+ - NODE_ENV=production
+
+ command: bash -c 'rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000'
+ networks:
+ - external_network
+ - internal_network
+ healthcheck:
+ # prettier-ignore
+ test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:3000/health || exit 1']
+ ports:
+ - '127.0.0.1:3000:3000'
+ depends_on:
+ - db
+ - redis
+ - elasticsearch
+ volumes:
+ - ./mastodon/public/system:/mastodon/public/system
+
+ streaming:
+ image: ghcr.io/glitch-soc/mastodon
+ restart: always
+ env_file: mastodon.env
+ command: node ./streaming
+ networks:
+ - external_network
+ - internal_network
+ healthcheck:
+ # prettier-ignore
+ test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1']
+ ports:
+ - '127.0.0.1:4000:4000'
+ depends_on:
+ - db
+ - redis
+
+ sidekiq:
+ image: ghcr.io/glitch-soc/mastodon
+ restart: always
+ env_file: mastodon.env
+ logging:
+ driver: json-file
+ options:
+ max-size: '50m'
+ max-file: '50'
+ command: bundle exec sidekiq
+ depends_on:
+ - db
+ - redis
+ networks:
+ - external_network
+ - internal_network
+ volumes:
+ - ./mastodon/public/system:/mastodon/public/system
+ healthcheck:
+ test: ['CMD-SHELL', "ps aux | grep '[s]idekiq\ 6' || false"]
+
+networks:
+ external_network:
+ internal_network:
+ internal: true