Kbin
Federated content aggregator and microblogging platform.
Directory Structure
- .env
- docker-compose.yml
docker-compose.yml
version: "3.9"
services:
www:
build:
context: ../../
dockerfile: docker/v2/Dockerfile
image: kbin
restart: unless-stopped
command: caddy run --config /etc/caddy/Caddyfile --adapter caddyfile
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:2019/metrics || exit 1"]
ports:
- 80:80
volumes:
- ./storage/caddy_config:/config
- ./storage/caddy_data:/data
- ./storage/media:/var/www/kbin/public/media
environment:
- SERVER_NAME=:80 # the addresss that the web server binds
- PHP_FASTCGI_HOST=php:9000 # caddy forward traffic to this host via fastcgi
- MERCURE_PUBLISHER_JWT_KEY=$MERCURE_JWT_SECRET
- MERCURE_SUBSCRIBER_JWT_KEY=$MERCURE_JWT_SECRET
depends_on:
- php
php:
build:
context: ../../
dockerfile: docker/v2/Dockerfile
image: kbin
restart: unless-stopped
command: php-fpm
healthcheck:
test: ["CMD-SHELL", "REQUEST_METHOD=GET SCRIPT_NAME=/ping SCRIPT_FILENAME=/ping cgi-fcgi -bind -connect localhost:9000 || exit 1"]
volumes:
- ./storage/media:/var/www/kbin/public/media
env_file:
- .env
depends_on:
- redis
- db
- rabbitmq
messenger:
build:
context: ../../
dockerfile: docker/v2/Dockerfile
image: kbin
restart: unless-stopped
command: bin/console messenger:consume async --time-limit=3600
healthcheck:
test: ["CMD-SHELL", "ps aux | grep 'messenger[:]consume' || exit 1"]
volumes:
- ./storage/media:/var/www/kbin/public/media
env_file:
- .env
depends_on:
- redis
- db
- rabbitmq
messenger_ap:
build:
context: ../../
dockerfile: docker/v2/Dockerfile
image: kbin
restart: unless-stopped
command: bin/console messenger:consume async_ap --time-limit=3600
healthcheck:
test: ["CMD-SHELL", "ps aux | grep 'messenger[:]consume' || exit 1"]
volumes:
- ./storage/media:/var/www/kbin/public/media
env_file:
- .env
depends_on:
- redis
- db
- rabbitmq
redis:
image: redis:alpine
restart: unless-stopped
command: /bin/sh -c "redis-server --requirepass $${REDIS_PASSWORD}"
volumes:
- ./storage/redis:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
db:
image: postgres:13-alpine
restart: unless-stopped
volumes:
- ./storage/postgres:/var/lib/postgresql/data
environment:
- POSTGRES_DB=kbin
- POSTGRES_USER=kbin
rabbitmq:
image: rabbitmq:3-management-alpine
restart: unless-stopped
environment:
- RABBITMQ_DEFAULT_USER=kbin
volumes:
- ./storage/rabbitmq:/var/lib/rabbitmq
ports:
- 15672:15672
# Add your favorite reverse proxy (e.g nginx) which accept incoming HTTPS
# traffic and forward to http://www:80
# nginx:
# image: nginx
# ports:
# - 443:443
# volumes:
# - ./nginx.conf:/etc/nginx/nginx.confResources
Website: https://kbin.pub/
GitHub: https://github.com/ernestwisniewski/kbin
Docker Hub: https://hub.docker.com/r/elestio/kbin
Configuration: https://github.com/ernestwisniewski/kbin/blob/develop/docs/docker_deployment_guide.md