Skip to content

Instantly share code, notes, and snippets.

@nmix
Last active September 13, 2016 10:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nmix/c364fa47ca46e26b21223e39d77580a6 to your computer and use it in GitHub Desktop.
Save nmix/c364fa47ca46e26b21223e39d77580a6 to your computer and use it in GitHub Desktop.
docker

Создание нового Rails-приложения в Docker

Исходные данные:

а) система ubuntu desktop 16.04

б) Docker version 1.11.2, build b9f10c9

1. Создаем Dockerfile следующего содержания

FROM ruby:2.3
MAINTAINER Some User <some.user@example.com>
RUN gem install rails
# RUN gem install rails --version=4.2.7

2. Создаем образ

docker build -t rails-image .
docker images

3. Запускаем контейнер

docker run -it --rm --name app rails-image /bin/bash
/# ruby -v
...
/# rails -v
...
/# exit

4. Создаем новое Rails-приложение

cd /some/dir
docker run -it --rm --user "$(id -u):$(id -g)" -v "$PWD":/usr/src/app -w /usr/src/app rails-image rails new --skip-bundle app
FROM python:2.7
MAINTAINER Nik Mikhaylichenko <nn.mikh@yandex.ru>
# Install Deps
RUN apt-get update -y -qq && \
apt-get install -y python-pip python2.7-dev libxext-dev python-qt4 qt4-dev-tools build-essential && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Install SIP
RUN mkdir -p /opt/sip && \
cd /opt/sip && \
curl -L -o sip.tar.gz http://sourceforge.net/projects/pyqt/files/sip/sip-4.17/sip-4.17.tar.gz && \
tar -xf sip.tar.gz && \
cd /opt/sip/sip-* && \
python configure.py && \
make && \
make install && \
cd /opt && \
rm -rf /opt/sip
# Install PyQt4
RUN mkdir -p /opt/pyqt && \
cd /opt/pyqt && \
curl -L -o pyqt4.tar.gz http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.11.4/PyQt-x11-gpl-4.11.4.tar.gz && \
tar -xf pyqt4.tar.gz && \
cd /opt/pyqt/PyQt* && \
python configure.py -c --confirm-license && \
make && \
make install && \
cd /opt && \
rm -rf /opt/pyqt
# Check & Go to src
RUN python -c "import PyQt4" && \
mkdir -p /src
WORKDIR /src
FROM python:3.4
MAINTAINER bssthu
# Install Deps
RUN apt-get update -y -qq && \
apt-get install -y python3-dev qt5-default && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Install SIP
RUN mkdir -p /opt/sip && \
cd /opt/sip && \
curl -L -o sip.tar.gz http://sourceforge.net/projects/pyqt/files/sip/sip-4.17/sip-4.17.tar.gz && \
tar -xf sip.tar.gz && \
cd /opt/sip/sip-* && \
python configure.py && \
make && \
make install && \
cd /opt && \
rm -rf /opt/sip
# Install PyQt5
RUN mkdir -p /opt/pyqt && \
cd /opt/pyqt && \
curl -L -o pyqt5.tar.gz http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.5.1/PyQt-gpl-5.5.1.tar.gz && \
tar -xf pyqt5.tar.gz && \
cd /opt/pyqt/PyQt* && \
python configure.py -c --confirm-license --no-designer-plugin -e QtCore -e QtGui -e QtWidgets && \
make && \
make install && \
cd /opt && \
rm -rf /opt/pyqt
# Check & Go to Workspace
RUN python -c "import PyQt5" && \
mkdir -p /opt/workspace
WORKDIR /opt/workspace

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

Исходные данные:

а) система ubuntu desktop 16.04

б) Docker version 1.11.2, build b9f10c9

в) аккаунт на hub.docker.com с логином someuser

1. Переходим в корневую директорию Rails-приложения

cd /my/project/path

2. Создаем Dockerfile следующего содержания

FROM ruby:2.3

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        nodejs \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /usr/src/app
COPY Gemfile* ./
RUN bundle install
COPY . .
RUN bin/rake db:migrate
RUN bin/rake db:seed

EXPOSE 3000
CMD ["rails", "server", "-b", "0.0.0.0"]

3. Создаем Docker-образ

docker build -t someuser/rails-mysql .

4. Проверяем наличие вновь созданного образа с именем someuser/railsapp-mysql

docker images

5. Запускаем контейнер

docker run --name app  -p 3000:3000 zoidenberg/railsapp-mysql

6. В браузере переходим по адресу http://localhost:3000 и наблюдаем наше приложение

7. Для загрузки нашего образа на hub.docker.com необходимо авторизоваться и выполнить команду push

docker login --username=somesuser
docker push zoidenberg/railsapp-mysql

8. Останавливаем и удалям контейнер

docker ps
docker stop app
socker rm app

9. Удаляем локальный образ someuser/railsapp-mysql и образ ruby:2.3, на основе которого мы создали свой

docker rmi someuser/railsapp-mysql
docker rmi ruby:2.3

10. Повторно запускаем контейнер из нашего образа, который автоматически загружается из hub.docker.com

docker run --name app  -p 3000:3000 someuser/railsapp-mysql
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment