version: '3.8' networks: back: mast-int: volumes: mastodon_public: mastodon_redis: mastodon_lockfile: mastodon_db: services: ### MASTODON caddy: image: caddy:2.6.4 volumes: - mastodon_public:/srv/mastodon/public:ro mastodon-redis: restart: always image: redis:7.0-alpine healthcheck: test: ['CMD', 'redis-cli', 'ping'] env_file: ../mastodon/env.production volumes: - mastodon_redis:/data networks: - mast-int restart: always mastodon-web: restart: always image: tootsuite/mastodon:v4.2.9 #healthcheck: #test: ['CMD-SHELL', 'wget -q --spider --proxy=off localhost:3000/health || exit 1'] #entrypoint: # - bash # - -c # #- "bundle exec rake db:prepare && cd /opt/mastodon && /usr/bin/tini -- bundle exec rails server" # - "[[ -e /mastodon/public/db.lock ]] && touch /mastodon/public/db.lock || touch /mastodon/public/db.lock && bundle exec rake db:prepare; /usr/bin/tini -- bundle exec rails server" env_file: ../mastodon/env.production ports: - "127.0.0.1:3000:3000" environment: LOCAL_DOMAIN: "mastodon.${DWEB_DOMAIN}" SMTP_FROM_ADDRESS: "notifications${DWEB_DOMAIN}" command: bash -c "rm -f /mastodon/tmp/pids/server.pid; bundle exec rails s -p 3000" depends_on: - mastodon-db - mastodon-redis - mastodon-streaming volumes: # https://www.digitalocean.com/community/tutorials/how-to-share-data-between-docker-containers - mastodon_public:/mastodon/public/ # map static files in volume for caddy networks: - mast-int - back restart: always mastodon-streaming: restart: always image: tootsuite/mastodon:v4.2.9 healthcheck: test: wget -q --spider --proxy=off localhost:4000/api/v1/streaming/health || exit 1 ] env_file: ../mastodon/env.production ports: - "127.0.0.1:4000:4000" environment: LOCAL_DOMAIN: "mastodon.${DWEB_DOMAIN}" SMTP_FROM_ADDRESS: "notifications@${DWEB_DOMAIN}" command: node ./streaming depends_on: - mastodon-db - mastodon-redis networks: - mast-int - back restart: always mastodon-sidekiq: restart: always image: tootsuite/mastodon:v4.2.9 #entrypoint: # - sh # - -c # - "service sendmail start && /usr/bin/tini -- bundle exec sidekiq" healthcheck: test: ps aux | grep '[s]idekiq\ 6' || false env_file: ../mastodon/env.production environment: LOCAL_DOMAIN: "mastodon.${DWEB_DOMAIN}" SMTP_FROM_ADDRESS: "notifications@${DWEB_DOMAIN}" command: bundle exec sidekiq depends_on: - mastodon-db - mastodon-redis volumes: - mastodon_public:/mastodon/public/ networks: - mast-int restart: always mastodon-db: restart: always image: postgres:14-alpine healthcheck: test: ['CMD', 'pg_isready', '-U', 'postgres'] environment: - 'POSTGRES_HOST_AUTH_METHOD=trust' volumes: - mastodon_db:/var/lib/postgresql/data networks: - mast-int restart: always