Farmbot-Web-App/docker-compose.yml

82 lines
2.1 KiB
YAML

# FARMBOT SERVICE LAYOUT
#
# ==========================================
#
# +--+ +-----+ +------+ +----+
# |DB| |REDIS| |PARCEL| |MQTT|
# +--+ +-----+ +------+ +----+
# ^ ^ ^ ^
# | | | |
# +----------------------------+
# | WEB |
# +----------------------------+
# ^ ^ ^
# | | |
# +-----------+ +-----------+ +-----------+
# |DELAYED_JOB| |LOG_DIGESTS| |RABBIT_JOBS|
# +-----------+ +-----------+ +-----------+
#
# ==========================================
version: '3.4'
x-rails: &rails_service
env_file: .env
image: farmbot_web
volumes: [".:/farmbot", "./docker_volumes/bundle_cache:/bundle"]
services:
db:
env_file: .env
image: postgres
volumes: ["./docker_volumes/db:/var/lib/postgresql/data"]
redis:
env_file: .env
expose: ["6379"]
image: redis
volumes:
- ./docker_volumes/redis/data:/data
- ./docker_volumes/redis/conf:/usr/local/etc/redis
parcel:
<<: *rails_service
command: bundle exec rake api:serve_assets
ports: ["3808"] # Parcel HMR Server
mqtt:
build:
context: ./docker_configs
dockerfile: rabbitmq.Dockerfile
env_file: .env
environment: ["RABBITMQ_CONFIG_FILE=/farmbot/farmbot_rmq_config"]
expose: ["15672"] # Management API (optional)
ports: ["5672", "1883", "8883", "3002"]
volumes: ["./docker_volumes/rabbit:/farmbot"]
web:
<<: *rails_service
depends_on: ["db", "redis", "mqtt"]
stdin_open: true # Needed for binding.pry
tty: true # Needed for binding.pry
build:
context: .
dockerfile: docker_configs/api.Dockerfile
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -e development -p 3000 -b 0.0.0.0"
ports: ["3000:3000"] # Web / API
delayed_job:
<<: *rails_service
depends_on: ["web"]
command: bundle exec rake jobs:work
log_digests:
<<: *rails_service
depends_on: ["web"]
command: bundle exec rake api:log_digest
rabbit_jobs:
<<: *rails_service
depends_on: ["web"]
command: bundle exec rails r lib/rabbit_workers.rb