diff --git a/Procfile.dev b/Procfile.dev index 4f20de7d1..020e5452b 100644 --- a/Procfile.dev +++ b/Procfile.dev @@ -1,5 +1 @@ rails: rails s -e development -p ${API_PORT:-3000} -b 0.0.0.0 -rabbit_workers: bin/rails r lib/rabbit_workers.rb -webpack: ./node_modules/.bin/webpack-dev-server --config config/webpack.config.js -worker: rake jobs:work -log_digests: FOREVER=true rake api:log_digest diff --git a/config/application.rb b/config/application.rb index 4a71a112d..7e881a050 100755 --- a/config/application.rb +++ b/config/application.rb @@ -19,6 +19,10 @@ module FarmBot I18n.enforce_available_locales = false LOCAL_API_HOST = ENV["API_HOST"] || "localhost" WEBPACK_URL = "http://#{LOCAL_API_HOST}:3808" + config.webpack.dev_server.host = proc { request.host } + config.webpack.dev_server.manifest_host = "webpack" + config.webpack.dev_server.manifest_port = 3808 + 10.times do puts "==HELLO??"*10 end config.generators do |g| g.template_engine :erb g.test_framework :rspec, :fixture_replacement => :factory_bot, :views => false, :helper => false diff --git a/docker-api.Dockerfile b/docker-api.Dockerfile index c56639416..f480af401 100644 --- a/docker-api.Dockerfile +++ b/docker-api.Dockerfile @@ -6,8 +6,9 @@ RUN apt-get update -qq && apt-get install -y \ postgresql-contrib RUN curl -sL https://deb.nodesource.com/setup_8.x | bash - RUN apt-get install -y nodejs -RUN mkdir /farmbot +RUN mkdir /farmbot WORKDIR /farmbot -COPY . /farmbot +ENV BUNDLE_PATH=/bundle BUNDLE_BIN=/bundle/bin GEM_HOME=/bundle +ENV PATH="${BUNDLE_BIN}:${PATH}" +COPY ./Gemfile /farmbot RUN bundle install - diff --git a/docker-compose.yml b/docker-compose.yml index 266e35653..6dd1274a0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,12 +1,6 @@ version: '3' services: - db: - image: postgres - volumes: - - ./docker_volumes/db:/var/lib/postgresql/data - env_file: - - ./.env - mqtt: + mqtt: # ====================================================================== build: ./mqtt ports: - "5672:5672" # AMQP (RabbitMQ) @@ -14,18 +8,75 @@ services: - "8883:8883" # MQTT over TLS/SSL - "3002:15675" # MQTT over WebSockets - "15672:15672" # Management API - web: + db: # ======================================================================= + image: postgres + volumes: + - ././docker_volumes/db:/var/lib/postgresql/data + env_file: + - .env + web: # ====================================================================== build: context: . dockerfile: docker-api.Dockerfile - # command: bundle exec rails s -p 3000 -b '0.0.0.0' - command: bundle exec rails api:start + # 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 -p 3000 -b '0.0.0.0'" volumes: - .:/farmbot + - ./docker_volumes/bundle_cache:/bundle ports: - "3000:3000" # Web / API - - "3808:3808" # Webpack Dev Server depends_on: - db env_file: - - ./.env + - .env + webpack: # =================================================================== + build: + context: . + dockerfile: docker-api.Dockerfile + command: ./node_modules/.bin/webpack-dev-server --config config/webpack.config.js + volumes: + - .:/farmbot + - ./docker_volumes/bundle_cache:/bundle + ports: + - "3808:3808" # Webpack Dev Server + depends_on: + - web + env_file: + - .env + delayed_job: # =============================================================== + build: + context: . + dockerfile: docker-api.Dockerfile + command: rake jobs:work + volumes: + - .:/farmbot + - ./docker_volumes/bundle_cache:/bundle + env_file: + - .env + depends_on: + - db + log_digests: # =============================================================== + build: + context: . + dockerfile: docker-api.Dockerfile + command: rake api:log_digest + volumes: + - .:/farmbot + - ./docker_volumes/bundle_cache:/bundle + depends_on: + - db + env_file: + - .env + rabbit_jobs: # =============================================================== + build: + context: . + dockerfile: docker-api.Dockerfile + command: rails r lib/rabbit_workers.rb + volumes: + - .:/farmbot + - ./docker_volumes/bundle_cache:/bundle + depends_on: + - db + - mqtt + env_file: + - .env