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 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 . |