Quantcast
Channel: Active questions tagged redis+ruby-on-rails - Stack Overflow
Viewing all articles
Browse latest Browse all 873

Rails jobs with Sidekiq in Google Cloud Run not working

$
0
0

I've a working Rails application in Google Cloud Run using:

  • Cloud Build
  • Cloud Registry
  • Cloud Run
  • Cloud SQL
  • Cloud Storage
  • Cloud Key Management Service
  • Cloud Scheduler

I've configured Sidekiq to execute some jobs in background but I get this error in Cloud Run logs when I'm trying to execute Sidekiq jobs.

Redis::CannotConnectError (Error connecting to Redis on 127.0.0.1:6379 (Errno::ECONNREFUSED)):

I let you here my deployment setup:

cloudbuild.yaml

steps:# Decrypt Rails Master key file- name: gcr.io/cloud-builders/gcloud  args: ["kms", "decrypt", "--ciphertext-file=./config/master.key.enc", "--plaintext-file=./config/master.key","--location=us-central1","--keyring=project_name", "--key=rails_master_key"]# Decrypt Whale on Rails service account credentials- name: gcr.io/cloud-builders/gcloud  args: ["kms", "decrypt", "--ciphertext-file=./config/project_name_runner.key.enc", "--plaintext-file=./config/project_name_runner.key","--location=us-central1","--keyring=project_name", "--key=project_name_runner_key"]# Build image with tag 'latest' and pass decrypted Rails DB password as argument- name: 'gcr.io/cloud-builders/docker'  args: [ 'build','--tag', 'gcr.io/$PROJECT_ID/project_name:latest','--build-arg', 'DB_PWD','--build-arg', 'RUBY_VERSION=${_RUBY_VERSION}','--build-arg', 'PG_MAJOR=${_PG_MAJOR}','--build-arg', 'NODE_MAJOR=${_NODE_MAJOR}','--build-arg', 'BUNDLER_VERSION=${_BUNDLER_VERSION}','--build-arg', 'RAILS_ENV=${_RAILS_ENV}','--build-arg', 'REDIS_URL=${_REDIS_URL}','--build-arg', 'DATABASE_HOST=${_DATABASE_HOST}','--build-arg', 'DATABASE_USER=${_DATABASE_USER}','--build-arg', 'DATABASE_NAME=${_DATABASE_NAME}','.'  ]  secretEnv: ['DB_PWD']# Push new image to Google Cloud Registry       - name: 'gcr.io/cloud-builders/docker'  args: ['push', 'gcr.io/$PROJECT_ID/project_name:latest']secrets:- kmsKeyName: projects/project_name/locations/us-central1/keyRings/project_name/cryptoKeys/db_pwd_key  secretEnv:    DB_PWD: "db_password"substitutions:  _RUBY_VERSION: '2.7.0'  _PG_MAJOR: '11'  _NODE_MAJOR: '12'  _BUNDLER_VERSION: '2.1.2'  _RAILS_ENV: production  _REDIS_URL: redis://redis:6379/  _DATABASE_HOST: /cloudsql/project_name:us-central1:project_name-production  _DATABASE_USER: production_user  _DATABASE_NAME: project_name-production

entrypoint.sh

#!/usr/bin/env bashcd /usr/src/app# Create the Rails production DB on first runbundle exec rake db:prepare# Do some protective cleanup> log/production.logrm -f tmp/pids/server.pid# Run the web service on container startup# $PORT is provided as an environment variable by Cloud Runbundle exec rails server -b 0.0.0.0 -p $PORT# Run sidekiq in productionbundle exec sidekiq -C config/sidekiq.yml

Dockerfile

# Leverage the official Ruby image from Docker Hub# https://hub.docker.com/_/rubyARG RUBY_VERSIONFROM ruby:$RUBY_VERSIONLABEL maintainer="myemail@gmail.com"ARG PG_MAJORARG NODE_MAJORARG BUNDLER_VERSIONARG RAILS_ENV# Add PostgreSQL to sources listRUN curl -sSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \&& echo 'deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list# Install recent versions of nodejs (10.x) and yarn pkg manager# Needed to properly pre-compile Rails assetsRUN (curl -sL https://deb.nodesource.com/setup_$NODE_MAJOR.x | bash -) && apt-get update && apt-get install -y nodejs # Add Yarn to the sources listRUN (curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -) && \    echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \    apt-get update && apt-get install -y yarn# Install production dependencies (Gems installation in# local vendor directory)WORKDIR /usr/src/appCOPY Gemfile Gemfile.lock ./ENV BUNDLE_FROZEN=trueRUN gem update --system && \    gem install bundler:$BUNDLER_VERSIONRUN bundle install# Copy application code to the container image.# Note: files listed in .gitignore are not copied# (e.g.secret files)COPY . .# Pre-compile Rails assets (master key needed)RUN yarn installRUN RAILS_ENV=production bundle exec rake assets:precompile# Set Google App Credentials environment variable with Service AccountENV GOOGLE_APPLICATION_CREDENTIALS=/usr/src/app/config/sunne_cms_api_runner.key# Setup Rails DB password passed on docker command line (see Cloud Build file)ARG DATABASE_NAMEARG DATABASE_HOSTARG DATABASE_USERARG DB_PWDENV DATABASE_PASSWORD=${DB_PWD}ENV DATABASE_NAME=${DATABASE_NAME}ENV DATABASE_HOST=${DATABASE_HOST}ENV DATABASE_USER=${DATABASE_USER}# Setting up Rails environmentENV RAILS_ENV=${RAILS_ENV}# For now we don't have a Nginx/Apache frontend so tell # the Puma HTTP server to serve static content# (e.g. CSS and Javascript files)ENV RAILS_SERVE_STATIC_FILES=true# Redirect Rails log to STDOUT for Cloud Run to captureENV RAILS_LOG_TO_STDOUT=true# Designate the initial sript to run on container startupRUN chmod +x /usr/src/app/entrypoint.shENTRYPOINT ["/usr/src/app/entrypoint.sh"]

Viewing all articles
Browse latest Browse all 873

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>