Ruby on Rails
Рельсы на докере
Поиск…
Вступление
Этот учебник начнется с установленного Docker и с помощью приложения Rails
Докер и докер-сочиняют
Прежде всего, нам нужно будет создать наш Dockerfile
. Хороший пример можно найти в этом блоге Nick Janetakis.
Этот код содержит сценарий, который будет выполнен на нашей докере-машине в момент запуска. По этой причине мы устанавливаем все необходимые библиотеки и заканчиваем началом Puma (RoR-dev-сервер)
# Use the barebones version of Ruby 2.3.
FROM ruby:2.3.0-slim
# Optionally set a maintainer name to let people know who made this image.
MAINTAINER Nick Janetakis <[email protected]>
# Install dependencies:
# - build-essential: To ensure certain gems can be compiled
# - nodejs: Compile assets
# - libpq-dev: Communicate with postgres through the postgres gem
RUN apt-get update && apt-get install -qq -y --no-install-recommends \
build-essential nodejs libpq-dev git
# Set an environment variable to store where the app is installed to inside
# of the Docker image. The name matches the project name out of convention only.
ENV INSTALL_PATH /mh-backend
RUN mkdir -p $INSTALL_PATH
# This sets the context of where commands will be running in and is documented
# on Docker's website extensively.
WORKDIR $INSTALL_PATH
# We want binstubs to be available so we can directly call sidekiq and
# potentially other binaries as command overrides without depending on
# bundle exec.
COPY Gemfile* $INSTALL_PATH/
ENV BUNDLE_GEMFILE $INSTALL_PATH/Gemfile
ENV BUNDLE_JOBS 2
ENV BUNDLE_PATH /gembox
RUN bundle install
# Copy in the application code from your work station at the current directory
# over to the working directory.
COPY . .
# Ensure the static assets are exposed to a volume so that nginx can read
# in these values later.
VOLUME ["$INSTALL_PATH/public"]
ENV RAILS_LOG_TO_STDOUT true
# The default command that gets run will be to start the Puma server.
CMD bundle exec puma -C config/puma.rb
Кроме того, мы будем использовать docker-compose, для этого мы создадим docker-compose.yml
. Объяснение этого файла будет более учебным пособием для докеров, чем интеграция с Rails, и я не буду здесь останавливаться.
version: '2'
services:
backend:
links:
- #whatever you need to link like db
build: .
command: ./scripts/start.sh
ports:
- '3000:3000'
volumes:
- .:/backend
volumes_from:
- gembox
env_file:
- .dev-docker.env
stdin_open: true
tty: true
Просто с этими двумя файлами вам будет достаточно, чтобы запустить docker-compose up
и разбудить ваш докер
Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow