Copy and paste this code into your terminal
DISCLAIMER: You should always review templates before running them. By running the template, you are agreeing to the terms of use.
The contents of this script as show. Any updates will be reflected in the below code and the snippet.
def print_green(heredoc) puts set_color heredoc, :green end def ask_with_default(prompt, default) value = ask("#{prompt} [#{default}]") value.blank? ? default : value end create_file './.dockerignore', <<~EOF .git* db/*.sqlite3 db/*.sqlite3-journal log/* tmp/* tmp/pid/server.pid Dockerfile README.rdoc EOF create_file './docker-compose.yml' do ruby_verison = ask_with_default("What version of Ruby do you want to use?", '2.6.6') node_version = ask_with_default("What version of Node do you want to use?", '13') bundle_version = ask_with_default("What version of Bundle do you want to use?", '2.1.4') postgres_version = ask_with_default("What version of Postgres do you want to use?", '12') <<~EOF version: '2.4' services: base: &app build: context: . dockerfile: ./Dockerfile args: RUBY_VERSION: '#{ruby_verison}' NODE_MAJOR: '#{node_version}' BUNDLE_VERSION: '#{bundle_version}' PG_MAJOR: '#{postgres_version}' tmpfs: - /tmp backend: &backend <<: *app stdin_open: true tty: true volumes: - .:/app:cached - rails_cache:/app/tmp/cache - bundle:/usr/local/bundle - node_modules:/app/node_modules - packs:/app/public/packs environment: - PSQL_HISTFILE=/app/log/.psql_history - DATABASE_URL=postgres://postgres:postgres@postgres:5432 - BOOTSNAP_CACHE_DIR=/bundle/bootsnap - WEBPACKER_DEV_SERVER_HOST=webpacker depends_on: - postgres - redis app: <<: *backend command: bundle exec rails server -b 0.0.0.0 ports: - '3000:3000' webpacker: <<: *app command: ./bin/webpack-dev-server ports: - '3035:3035' volumes: - .:/app:cached - bundle:/usr/local/bundle - node_modules:/app/node_modules - packs:/app/public/packs environment: - NODE_ENV=${NODE_ENV:-development} - RAILS_ENV=${RAILS_ENV:-development} - WEBPACKER_DEV_SERVER_HOST=0.0.0.0 sidekiq: <<: *backend command: bundle exec sidekiq -C config/sidekiq.yml redis: image: redis:latest postgres: image: postgres:#{postgres_version} volumes: - .psqlrc:/root/.psqlrc:ro - postgres:/var/lib/postgresql/data - ./log:/root/log:cached environment: - PSQL_HISTFILE=/root/log/.psql_history ports: - 5432 healthcheck: test: pg_isready -U postgres -h 127.0.0.1 interval: 5s volumes: postgres: redis: bundle: node_modules: rails_cache: packs: EOF end create_file './Dockerfile', <<~EOF ARG RUBY_VERSION FROM ruby:$RUBY_VERSION LABEL [email protected] ARG NODE_MAJOR ARG PG_MAJOR ARG BUNDLE_VERSION RUN apt-get update RUN apt-get install -y build-essential # Add PostgreSQL to sources list RUN curl -sSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - \ && echo 'deb http://apt.postgresql.org/pub/repos/apt/ buster-pgdg main' $PG_MAJOR > /etc/apt/sources.list.d/pgdg.list RUN curl -sL https://deb.nodesource.com/setup_$NODE_MAJOR.x | bash - RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list RUN apt-get -y update RUN apt-get -y install nodejs RUN apt-get -y install yarn RUN yarn config set "strict-ssl" false RUN bundle config --global frozen 1 COPY Gemfile Gemfile.lock ./ RUN gem install bundler -v $BUNDLE_VERSION RUN bundle install -j $(nproc) RUN mkdir -p /app WORKDIR /app EOF print_green <<~EOF Your application is now configured with Docker. To start running docker, you will need Docker and Docker Compose (https://www.docker.com/get-started) The docker-compose.yml file has been created to house the various services that will be used. Feel free to comment out the services not needed by your application. - app <- the containers for the rails application - webpacker - sidekiq - redis - postgres To get started, type "docker-compose up" When finished, type "docker-compose down" If you need to run migrations, you can run "docker-compose run app rails db:migrate" You can also get into the rails console with "docker-compose run app rails console" EOF
A place where you can thank the author, post problems, give constructive feedback, etc. Be nice!