--- 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 and Worker pixelfed-app: # Comment to use dockerhub image build: context: . dockerfile: contrib/docker/Dockerfile.fpm image: porttown.solarpunk.moe/pixelfed restart: unless-stopped env_file: - .env.docker volumes: - app-storage:/var/www/storage - app-bootstrap:/var/www/bootstrap - "./.env.docker:/var/www/.env" networks: internal: external: mail: depends_on: - db - redis worker: build: context: . dockerfile: contrib/docker/Dockerfile.fpm image: porttown.solarpunk.moe/pixelfed restart: unless-stopped env_file: - .env.docker volumes: - app-storage:/var/www/storage - app-bootstrap:/var/www/bootstrap networks: - internal - mail command: gosu www-data php artisan horizon depends_on: - db - redis ## DB and Cache db: image: mysql:8.0 restart: unless-stopped networks: - internal command: --default-authentication-plugin=mysql_native_password env_file: - .env.docker volumes: - "db-data:/var/lib/lib/mysql" redis: image: redis:5-alpine restart: unless-stopped env_file: - .env.docker volumes: - "redis-data:/data" networks: - internal nginx: image: nginx restart: always command: /var/www/start.nginx.sh networks: - httpsproxy - external volumes: - ./contrib/docker-nginx.conf:/etc/nginx/templates/default.conf.template - ./contrib/docker/start.nginx.sh:/var/www/start.nginx.sh - ./public:/var/www/public - app-storage:/var/www/storage environment: - LETSENCRYPT_HOST=pix.solarpunk.moe - VIRTUAL_HOST=pix.solarpunk.moe - VIRTUAL_PORT=80 - NGINX_PORT=80 volumes: db-data: redis-data: app-storage: app-bootstrap: networks: internal: internal: true external: mail: external: true httpsproxy: external: true