Docker是一个相对较新且发展Swift的项目,它允许创建非常轻便的“虚拟机”。
先决条件
除了基本熟悉命令行和使用文本编辑器之外,本教程不需要其他特定技能。 需要以下服务:
- Docker Hub (登录-如果尚未注册,请注册)
- Rails应用程序
安装电脑
在计算机上进行所有工具设置可能是一项艰巨的任务,但值得庆幸的是,随着Docker变得稳定,在您喜欢的OS上启动并运行Docker变得非常容易。 首先,我们将安装Docker。
直到几个版本之前,在OSX和Windows上运行Docker还是很麻烦的。 但是,最近,Docker已投入大量资金来改善其用户在这些OS上的入职体验,因此,运行Docker现在是一个轻而易举的事。 的
Docker 入门指南提供了在Docker上设置Docker的详细说明
Mac , Linux和 Windows 。
安装完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