Docker化现有的Rails应用程序

Docker是一个相对较新且发展Swift的项目,它允许创建非常轻便的“虚拟机”。

先决条件

除了基本熟悉命令行和使用文本编辑器之外,本教程不需要其他特定技能。 需要以下服务:

  • Docker Hub (登录-如果尚未注册,请注册)
  • Rails应用程序

安装电脑

在计算机上进行所有工具设置可能是一项艰巨的任务,但值得庆幸的是,随着Docker变得稳定,在您喜欢的OS上启动并运行Docker变得非常容易。 首先,我们将安装Docker。

直到几个版本之前,在OSX和Windows上运行Docker还是很麻烦的。 但是,最近,Docker已投入大量资金来改善其用户在这些OS上的入职体验,因此,运行Docker现在是一个轻而易举的事。 的
Docker 入门指南提供了在Docker上设置Docker的详细说明
MacLinuxWindows

安装完Docker之后,请运行以下命令测试Docker的安装:

$ docker run hello-world

Hello from Docker.

This message shows that your installation appears to be working correctly.
...

从Rails应用程序开始:
我不会像在dockers网站和许多博客网站上那样通过docker命令。 您可以通过多种方式将Ruby应用程序部署在Docker容器中。 您可以选择以下任意一种现有的Ruby映像之一: 公共泊坞窗注册表

建立基础图像

该图像将为文章的其余部分奠定基础,因为我们将使用结果图像来创建我们的Rails图像集。

该映像将包含Rails希望在基于Debian的OS上编译并正确运行的所有内容。 我将不讨论所需的软件包,而是将重点放在关注点的分离和图像集的配置上。

要记住的一件事是,我们将构建的映像仅用于RubyOnRails,并且将不包含任何与数据库相关的软件包。 如果需要安装带有“扩展”软件包的本机扩展的gem,则除非您的所有应用程序都需要,否则应将其放入该特定映像。

您对这张图片有什么期待?

由于存在以下标志,该映像不会在安装过程中抱怨任何TTY警告:
非交互式),我们正在使用,您的所有应用程序都将用作编码(
zh_CN.UTF-8)。

找到以下图像和说明,如下所示。

  • 我在我的项目中使用ruby 1.9.3。
  • Gemfile已使用rails 3.2.3生成,您可以使用自己的Gemfile。

#Dockerfile

FROM ubuntu:trusty  # Using Ubuntu OS
MAINTAINER "Santosh Mohanty <santa.jyp@gmail.com>" # 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

执行映像:

请按照以下步骤从Dockerfile构建Docker映像:

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

这将在docker容器中运行rails应用程序

少量Imp命令:

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.


您可能会发现从Container连接到DB的困难,这可以通过运行DB Image或指向DB的特定IP而非本地IP来解决。

我将撰写有关如何使用docker compose将MySQL DB映像连接到Rails映像的博客。

翻译自: https://www.javacodegeeks.com/2017/02/dockerizing-existing-rails-application.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值