DRY up docker-compose.yml with YML anchors

pull/1005/head
Rick Carlino 2018-10-03 09:46:25 -05:00
parent 86ef8ea818
commit 4068dc9e79
2 changed files with 41 additions and 71 deletions

View File

@ -1,6 +1,25 @@
version: '3' version: '3.4'
x-db_user: &db_user
depends_on: ["db"]
x-rails_job: &rails_job
build:
context: .
dockerfile: docker_configs/api.Dockerfile
env_file: .env
volumes:
- .:/farmbot
- ./docker_volumes/bundle_cache:/bundle
services: services:
mqtt: # ====================================================================== db: # ====================
image: postgres
volumes: ["./docker_volumes/db:/var/lib/postgresql/data"]
env_file: .env
web: # ====================
<<: *rails_job
<<: *db_user
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -e development -p ${API_PORT:-3000} -b 0.0.0.0"
ports: ["3000:3000"] # Web / API
mqtt: # ====================
build: build:
context: ./docker_configs context: ./docker_configs
dockerfile: rabbitmq.Dockerfile dockerfile: rabbitmq.Dockerfile
@ -10,75 +29,21 @@ services:
- "8883:8883" # MQTT over TLS/SSL - "8883:8883" # MQTT over TLS/SSL
- "3002:15675" # MQTT over WebSockets - "3002:15675" # MQTT over WebSockets
- "15672:15672" # Management API - "15672:15672" # Management API
db: # ======================================================================= depends_on: ["web"]
image: postgres env_file: .env
volumes: webpack: # ====================
- ./docker_volumes/db:/var/lib/postgresql/data <<: *rails_job
env_file:
- .env
web: # ======================================================================
build:
context: .
dockerfile: docker_configs/api.Dockerfile
# Add the `rm -f` part to avoid "server is still running..." errors:
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -e development -p ${API_PORT:-3000} -b 0.0.0.0"
volumes:
- .:/farmbot
- ./docker_volumes/bundle_cache:/bundle
ports:
- "3000:3000" # Web / API
depends_on:
- db
env_file:
- .env
webpack: # ===================================================================
build:
context: .
dockerfile: docker_configs/api.Dockerfile
command: ./node_modules/.bin/webpack-dev-server --config config/webpack.config.js command: ./node_modules/.bin/webpack-dev-server --config config/webpack.config.js
volumes: ports: ["3808:3808"] # Webpack Dev Server
- .:/farmbot delayed_job: # ====================
- ./docker_volumes/bundle_cache:/bundle <<: *rails_job
ports: <<: *db_user
- "3808:3808" # Webpack Dev Server
depends_on:
- web
env_file:
- .env
delayed_job: # ===============================================================
build:
context: .
dockerfile: docker_configs/api.Dockerfile
command: bundle exec rake jobs:work command: bundle exec rake jobs:work
volumes: log_digests: # ====================
- .:/farmbot <<: *rails_job
- ./docker_volumes/bundle_cache:/bundle <<: *db_user
env_file:
- .env
depends_on:
- db
log_digests: # ===============================================================
build:
context: .
dockerfile: docker_configs/api.Dockerfile
command: bundle exec rake api:log_digest command: bundle exec rake api:log_digest
volumes: rabbit_jobs: # ====================
- .:/farmbot <<: *rails_job
- ./docker_volumes/bundle_cache:/bundle
depends_on:
- db
env_file:
- .env
rabbit_jobs: # ===============================================================
build:
context: .
dockerfile: docker_configs/api.Dockerfile
command: bundle exec rails r lib/rabbit_workers.rb command: bundle exec rails r lib/rabbit_workers.rb
volumes: depends_on: ["db","mqtt"]
- .:/farmbot
- ./docker_volumes/bundle_cache:/bundle
depends_on:
- db
- mqtt
env_file:
- .env

View File

@ -19,7 +19,7 @@ def check_for_digests
puts "Sending log digest to device \##{id} (#{device.name})" puts "Sending log digest to device \##{id} (#{device.name})"
LogDeliveryMailer.log_digest(device).deliver LogDeliveryMailer.log_digest(device).deliver
end end
sleep 10 sleep 10.minutes
end end
class V7Migration class V7Migration
@ -89,6 +89,11 @@ namespace :api do
sh "sudo docker-compose up --scale webpack=0" sh "sudo docker-compose up --scale webpack=0"
end end
desc "Run Webpack _ONLY_. No other services"
task webpack: :environment do
sh "sudo docker-compose run webpack npm run webpack"
end
desc "Pull the latest Farmbot API version" desc "Pull the latest Farmbot API version"
task(update: :environment) { same_thing } task(update: :environment) { same_thing }