Статьи

Докеризация существующего приложения Rails

Docker — это относительно новый и быстро развивающийся проект, который позволяет создавать очень легкие «виртуальные машины».

Предпосылки

Для этого урока не требуются особые навыки, кроме базового удобства использования командной строки и использования текстового редактора. Необходимы следующие услуги:

  • Docker Hub (Войти — Зарегистрироваться, если у вас нет)
  • Приложение Rails

Настройка вашего компьютера

Получить все настройки инструментов на вашем компьютере может быть непростой задачей, но, к счастью, поскольку Docker стал стабильным, настроить и запустить Docker на вашей любимой ОС стало очень легко. Сначала мы установим Docker.

Еще несколько релизов назад запуск Docker на OSX и Windows был довольно сложной задачей. В последнее время, однако, Docker значительно инвестировал в улучшение взаимодействия своих пользователей в этих ОС, поэтому запуск Docker теперь является легкой прогулкой.
Руководство по началу работы в Docker содержит подробные инструкции по настройке Docker на
Mac ,
Linux и
Windows

После завершения установки Docker протестируйте установку Docker, выполнив следующее:

1
2
3
4
5
6
$ docker run hello-world
 
Hello from Docker.
 
This message shows that your installation appears to be working correctly.
...

Начиная с Rails-приложения:
Я не буду проходить через команды докера, поскольку это можно найти на сайте докеров и на многих блогах. Существуют различные способы развертывания приложений Ruby в контейнере Docker. Вы можете выбрать одно из многих существующих изображений Ruby на
общедоступный реестр докеров

Построение базового изображения

Это изображение станет основой для остальной части поста, так как мы будем использовать полученное изображение для создания нашего набора изображений Rails.

Образ будет содержать все, что Rails ожидает от компиляции и правильной работы в ОС на основе Debian. Я не буду говорить о необходимых пакетах, вместо этого я сосредоточусь на разделении проблем и настройке набора изображений.

Следует иметь в виду, что образ, который мы создадим, предназначен только для RubyOnRails и не содержит пакетов, связанных с базой данных. Если необходимо установить гем с собственными расширениями, требующими «дополнительных» пакетов, они должны войти в этот конкретный образ, если это не требуется всем вашим приложениям.

Что вы должны ожидать от этого изображения?

Этот образ не будет жаловаться на предупреждения TTY во время установки из-за флага (
неинтерактивно) мы используем, все ваши приложения будут использовать в качестве кодировки (
en_US.UTF-8). Затем кодирование.

Найдите ниже изображение и объяснение, как следует.

  • Я использую ruby ​​1.9.3 для моего проекта.
  • Gemfile уже собран с рельсами 3.2.3, вы можете использовать свой собственный Gemfile.

#Dockerfile

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
FROM ubuntu:trusty  # Using Ubuntu OS
MAINTAINER "Santosh Mohanty <[email protected]>" # Maintainer Name
RUN apt-get update # Updating OS
 
ENV PATH /usr/local/rvm/bin:$PATH  # Set ENV Path
 
RUN apt-get update && apt-get -y upgrade && apt-get -y install ruby 1.9.3 # Installation of Ruby
RUN ln -sf /usr/bin/ruby1.9.3 /etc/alternatives/ruby
 
# basics
RUN apt-get install -y build-essential
RUN apt-get install -y mysql-client libmysqlclient-dev openssl libreadline6
                       libreadline6-dev curl zlib1g zlib1g-dev libssl-dev libyaml-dev
                       libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev
                       ncurses-dev automake libtool bison subversion pkg-  config gawk
                       libgdbm-dev libffi-dev npm
 
RUN gem install bundler
ADD Gemfile /app/Gemfile
ADD Gemfile.lock /app/Gemfile.lock
WORKDIR /app
RUN bundle install
ADD . /app      # Adds your Project Structure to docker
ENV ENVIRONMENT development
CMD ["rails","s"]
 
EXPOSE 3000 # Exposing PORT 3000 for Development

Выполнение изображения:

Выполните следующие шаги, чтобы создать свой образ Docker из Dockerfile:

1
2
docker build -t rails_image ~/workspace/PATH_TO_DOCKERFILE
docker run -p 3000:3000 rails_image # Mapping container port 3000 to local port 3000

Это запустит ваше приложение rails внутри Docker-контейнера.

Несколько команд Imp:

1
2
3
4
docker run -it rails_image /bin/bash # this would bring up the bash prompt of docker
docker images # List Images
docker rmi IMAGE_ID -f  # remove Image
docker ps  # for listing running containers.


Вы можете столкнуться с трудностями при подключении к БД из контейнера. Это можно решить, запустив образ БД или указав на конкретный IP БД вместо локального IP.

Я буду писать блог о том, как подключить MySQL DB Image к Rails Image с помощью docker compose.

Ссылка: Докеризация существующего приложения Rails от нашего партнера по JCG Абхишека Сомани из блога Java, J2EE, Server .