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-worldHello 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 OSMAINTAINER "Santosh Mohanty <santa.jyp@gmail.com>" # Maintainer NameRUN apt-get update # Updating OSENV PATH /usr/local/rvm/bin:$PATH # Set ENV PathRUN apt-get update && apt-get -y upgrade && apt-get -y install ruby 1.9.3 # Installation of RubyRUN ln -sf /usr/bin/ruby1.9.3 /etc/alternatives/ruby# basicsRUN apt-get install -y build-essentialRUN 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 npmRUN gem install bundlerADD Gemfile /app/GemfileADD Gemfile.lock /app/Gemfile.lockWORKDIR /appRUN bundle installADD . /app # Adds your Project Structure to dockerENV ENVIRONMENT developmentCMD ["rails","s"]EXPOSE 3000 # Exposing PORT 3000 for Development |
Выполнение изображения:
Выполните следующие шаги, чтобы создать свой образ Docker из Dockerfile:
|
1
2
|
docker build -t rails_image ~/workspace/PATH_TO_DOCKERFILEdocker 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 dockerdocker images # List Imagesdocker rmi IMAGE_ID -f # remove Imagedocker ps # for listing running containers. |
Вы можете столкнуться с трудностями при подключении к БД из контейнера. Это можно решить, запустив образ БД или указав на конкретный IP БД вместо локального IP.
Я буду писать блог о том, как подключить MySQL DB Image к Rails Image с помощью docker compose.
| Ссылка: | Докеризация существующего приложения Rails от нашего партнера по JCG Абхишека Сомани из блога Java, J2EE, Server . |