diff options
Diffstat (limited to 'mastodon/docker-compose.yml')
-rw-r--r-- | mastodon/docker-compose.yml | 130 |
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 |