--- version: '3' # In order to set configuration, please use a .env file in # your compose project directory (the same directory as your # docker-compose.yml), and set database options, application # name, key, and other settings there. # A list of available settings is available in .env.example # # The services should scale properly across a swarm cluster # if the volumes are properly shared between cluster members. services: app: # Comment to use dockerhub image build: . image: pixelfed restart: unless-stopped ## If you have a traefik running, uncomment this to expose Pixelfed # labels: # - traefik.enable=true # - traefik.frontend.rule=Host:your.url # - traefik.port=80 ## If you have a standard reverse proxy, uncommit this to expose Pixelfed # ports: # - "127.0.0.1:8080:80" env_file: - ./.env volumes: - "app-storage:/var/www/storage" - "app-bootstrap:/var/www/bootstrap" networks: - external - internal worker: # Comment this whole block if HORIZON_EMBED is true. # Comment to use dockerhub image build: . image: pixelfed restart: unless-stopped env_file: - ./.env volumes: - "app-storage:/var/www/storage" - "app-bootstrap:/var/www/bootstrap" networks: - external # Required for ActivityPub - internal command: gosu www-data php artisan horizon db: image: mysql:8.0 restart: unless-stopped networks: - internal environment: - MYSQL_DATABASE=pixelfed - MYSQL_USER=${DB_USERNAME} - MYSQL_PASSWORD=${DB_PASSWORD} - MYSQL_RANDOM_ROOT_PASSWORD=true volumes: - "db-data:/var/lib/mysql" redis: image: redis:5-alpine restart: unless-stopped volumes: - "redis-data:/data" networks: - internal # Adjust your volume data in order to store data where you wish volumes: redis-data: db-data: app-storage: app-bootstrap: networks: internal: internal: true external: driver: bridge