2019-04-03 13:57:27 -06:00
|
|
|
# FARMBOT SERVICE LAYOUT
|
|
|
|
#
|
|
|
|
# ==========================================
|
|
|
|
#
|
|
|
|
# +--+ +-----+ +------+ +----+
|
|
|
|
# |DB| |REDIS| |PARCEL| |MQTT|
|
|
|
|
# +--+ +-----+ +------+ +----+
|
|
|
|
# ^ ^ ^ ^
|
|
|
|
# | | | |
|
|
|
|
# +----------------------------+
|
|
|
|
# | WEB |
|
|
|
|
# +----------------------------+
|
|
|
|
# ^ ^ ^
|
|
|
|
# | | |
|
|
|
|
# +-----------+ +-----------+ +-----------+
|
|
|
|
# |DELAYED_JOB| |LOG_DIGESTS| |RABBIT_JOBS|
|
|
|
|
# +-----------+ +-----------+ +-----------+
|
|
|
|
#
|
|
|
|
# ==========================================
|
2018-10-05 13:19:32 -06:00
|
|
|
|
2019-04-03 13:57:27 -06:00
|
|
|
version: '3.4'
|
2018-10-05 13:19:32 -06:00
|
|
|
|
2019-04-03 13:57:27 -06:00
|
|
|
x-rails: &rails_service
|
2018-10-05 13:19:32 -06:00
|
|
|
env_file: .env
|
2019-04-03 13:57:27 -06:00
|
|
|
image: farmbot_web
|
|
|
|
volumes: [".:/farmbot", "./docker_volumes/bundle_cache:/bundle"]
|
|
|
|
|
2018-10-01 09:16:46 -06:00
|
|
|
services:
|
2019-04-03 13:57:27 -06:00
|
|
|
db:
|
|
|
|
env_file: .env
|
|
|
|
image: postgres
|
|
|
|
volumes: ["./docker_volumes/db:/var/lib/postgresql/data"]
|
|
|
|
|
2018-10-04 20:09:50 -06:00
|
|
|
redis:
|
2019-04-03 13:57:27 -06:00
|
|
|
env_file: .env
|
|
|
|
expose: ["6379"]
|
|
|
|
image: redis
|
2018-10-05 09:58:16 -06:00
|
|
|
volumes:
|
|
|
|
- ./docker_volumes/redis/data:/data
|
|
|
|
- ./docker_volumes/redis/conf:/usr/local/etc/redis
|
2019-04-03 13:57:27 -06:00
|
|
|
|
|
|
|
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)
|
2019-04-04 09:59:37 -06:00
|
|
|
ports: ["3002:15675", "5672", "1883", "8883"]
|
2019-04-03 13:57:27 -06:00
|
|
|
volumes: ["./docker_volumes/rabbit:/farmbot"]
|
|
|
|
|
|
|
|
web:
|
|
|
|
<<: *rails_service
|
|
|
|
depends_on: ["db", "redis", "mqtt"]
|
2018-11-12 14:21:24 -07:00
|
|
|
stdin_open: true # Needed for binding.pry
|
2019-04-03 13:57:27 -06:00
|
|
|
tty: true # Needed for binding.pry
|
2018-10-04 13:16:56 -06:00
|
|
|
build:
|
|
|
|
context: .
|
|
|
|
dockerfile: docker_configs/api.Dockerfile
|
2018-10-04 20:09:50 -06:00
|
|
|
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -e development -p 3000 -b 0.0.0.0"
|
2018-10-03 08:46:25 -06:00
|
|
|
ports: ["3000:3000"] # Web / API
|
2019-04-03 13:57:27 -06:00
|
|
|
|
|
|
|
delayed_job:
|
|
|
|
<<: *rails_service
|
2018-10-03 08:46:25 -06:00
|
|
|
depends_on: ["web"]
|
2018-10-01 14:06:26 -06:00
|
|
|
command: bundle exec rake jobs:work
|
2019-04-03 13:57:27 -06:00
|
|
|
|
|
|
|
log_digests:
|
|
|
|
<<: *rails_service
|
|
|
|
depends_on: ["web"]
|
2018-10-01 14:06:26 -06:00
|
|
|
command: bundle exec rake api:log_digest
|
2019-04-03 13:57:27 -06:00
|
|
|
|
|
|
|
rabbit_jobs:
|
|
|
|
<<: *rails_service
|
|
|
|
depends_on: ["web"]
|
2018-10-04 09:57:54 -06:00
|
|
|
command: bundle exec rails r lib/rabbit_workers.rb
|
2019-04-03 14:08:38 -06:00
|
|
|
|
|
|
|
typescript:
|
|
|
|
<<: *rails_service
|
|
|
|
depends_on: ["web"]
|
|
|
|
command: node_modules/typescript/bin/tsc -w --noEmit
|