version: '2' networks: lb_web: external: true back: driver: bridge ipam: driver: default config: - subnet: 10.0.${SUBNET}.0/24 services: db: restart: always image: postgres:14-alpine shm_size: 1g networks: - back volumes: - ./data/postgres:/var/lib/postgresql/data environment: - POSTGRES_PASSWORD redis: restart: always image: redis:7-alpine networks: - back volumes: - ./data/redis:/data web: image: nginx:alpine volumes: - ./nginx.conf:/etc/nginx/nginx.conf volumes_from: - app depends_on: - app - streaming networks: - back - lb_web environment: - VIRTUAL_HOST - VIRTUAL_PORT=80 - LETSENCRYPT_HOST app: restart: always image: ghcr.io/mastodon/mastodon:v4.1.12 env_file: .env.production command: bundle exec rails s -p 3000 -b '0.0.0.0' depends_on: - db - redis volumes: - ./public/system:/mastodon/public/system networks: - back streaming: restart: always image: ghcr.io/mastodon/mastodon:v4.1.12 env_file: .env.production command: yarn start depends_on: - db - redis networks: - back sidekiq: restart: always image: ghcr.io/mastodon/mastodon:v4.1.12 env_file: .env.production command: bundle exec sidekiq depends_on: - db - redis volumes: - ./public/system:/mastodon/public/system networks: - back