摘要:开发,最让人头疼的就是环境问题。所以一直在尝试做一个可以随时复用的开发环境来。安装关于下有了最新的解决方案,就是,直接下载安装就可以了目前尚在版本,但是对于开发环境使用足矣。
1. 安装 Dockerrails 开发,最让人头疼的就是环境问题。其本身的理念加上某伟大防御工程的帮助,使得每次环境的配置都的花费很长的时间来解决;同时,与人协作也有诸多不便。所以一直在尝试做一个可以随时复用的开发环境来。
关于 Mac 下 docker 有了最新的解决方案,就是 Docker for Mac,直接下载安装就可以了(目前尚在 beta 版本,但是对于开发环境使用足矣)。
2. 编写 Dockerfile为了实现目的,我做了两个 docker image,一个 base image,命名 rails,主要实现 rails 运行环境的基础配置,为的是以后方便复用,另一个是项目相关的 image,主要针对特定的项目做一些配置。
rails.Dockerfile(关键部分在注释中有说明)
FROM ubuntu:16.10 # 如果下载的很慢,这里可以改成 Daocloud 的镜像:daocloud.io/library/ubuntu:trusty-XXXXXXX MAINTAINER Tairy# 改成你自己的 # Run update # 为了加快 update 的速度,修改 ubuntu 源为阿里云(目前尝试的最快的,也可以自行选择其他国内的镜像) RUN sed -i "s/archive.ubuntu.com/mirrors.aliyun.com/g" /etc/apt/sources.list && apt-get update --fix-missing && apt-get -y upgrade # Install dependencies RUN apt-get install -y git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev RUN apt-get update --fix-missing RUN apt-get install -y libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev # Install rbenv # 这里 clone 的时候可能会有点慢,可以先 clone 到本地,把下面的 clone 操作改成 ADD rbenv /root/.rbenv 操作即可。 RUN git clone git://github.com/sstephenson/rbenv.git /root/.rbenv && echo "export PATH="$HOME/.rbenv/bin:$PATH"" >> /root/.bashrc && echo "eval "$(rbenv init -)"" >> /root/.bashrc && git clone git://github.com/sstephenson/ruby-build.git /root/.rbenv/plugins/ruby-build && echo "export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"" >> /root/.bashrc # 为了加速 rbenv 使用 ruby china 的加速插件 RUN git clone https://github.com/andorchen/rbenv-china-mirror.git /root/.rbenv/plugins/rbenv-china-mirror # Install ruby RUN /root/.rbenv/bin/rbenv install -v 2.3.1 && /root/.rbenv/bin/rbenv global 2.3.1 && echo "gem: --no-document" > /root/.gemrc && /root/.rbenv/shims/gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/ && /root/.rbenv/shims/gem install bundler && /root/.rbenv/shims/gem install rails && /root/.rbenv/bin/rbenv rehash RUN apt-get install -y software-properties-common python-software-properties # Install nodejs RUN apt-get -y install nodejs RUN /root/.rbenv/shims/bundle config --global frozen 1 RUN /root/.rbenv/shims/bundle config --global silence_root_warning 1 # Run project RUN mkdir -p /working WORKDIR /working ONBUILD COPY Gemfile /working ONBUILD COPY Gemfile.lock /working ONBUILD RUN /root/.rbenv/shims/bundle install --no-deployment ONBUILD COPY . /working # Some tools RUN apt-get install -y vim inetutils-ping
build
cd /path/to/Dockerfile docker build rails .
以上,这个image 将会安装 rails 应用运行的基础环境,并且设置了 onbuild 执行的命令,之后自己的 rails 便可依赖该项目创建,例如:
demo.Dockerfile
FROM rails:latest # 这里添加依赖 MAINTAINER Tairy# TODO: custom env EXPOSE 3000
将此 Dockerfile 置于 rails 的项目目录下,即可进行 build:
cd /path/to/rails/app/path docker build demo .3. 使用 docker-compose
使用 docker-compose 可以更好的管理容器,可在项目目录下编写 docker-compose.yml 文件(使用时删除#开头的注释内容):
# compose 版本号,选择 2 即可 version: "2" services: # 数据库容器 db: image: mongodb # 数据库端口映射 ports: - "4568:27017" web: # build 路径 build: . # 相当于 Dockerfile 中的 CMD command: /root/.rbenv/shims/bundle exec rails s -p 3000 -b 0.0.0.0 ports: - "3000:3000" # 共享目录 volumes: - .:/working # 依赖容器 depends_on: - db
进而,执行 docker-compose up 命令即可实现容器的构建,等 server 启动完成后,就可以通过 localhost:3000 来访问了。
也可以加参数 docker-compose up -d 让其在后台运行。
4. RubyMine & Docker可以在 RubyMine 中安装 Docker Plugin 来直接构建容器。
1. 安装 docker plugin在 Preferences/Plugins 中搜索安装。
2. 配置 docker plugin打开 Build, Execution, Deployment/Docker
Name: ServerName
API URL: [Docker API Url]()
Certificates folder: [HTTPS]()
Docker Compose executable: 使用 which docker-compose 查看。
3. 配置构建方式在工具栏中打开 Run/Debug Configurations 窗口:
Server: 选择第二步配置的 server
Deployment: 选择 docker-compose.yml
至此,便可在 IDE 中直接构建项目容器。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/26692.html
摘要:使用有一段时间了,打算把自己实践过程中的一些理解和感悟记录下来。目录实践一了解架构实践二使用教程实践三下构建开发环境实践四环境容器化实践五生产环境容器化实践六容器监控实践七提升幸福感实践八构建开发环境实践九生产环境优化参考源码分析系列文章 使用 docker 有一段时间了,打算把自己实践过程中的一些理解和感悟记录下来。 系列文章发布在 SegmentFault 上我的专栏 Tairy,...
摘要:此刻的后手指依旧飞速地敲打键盘,丝毫没有要停不下来意思。阅读本期技术周刊,你不光能弄明白什么是,使用的意义何在,还将被传授秘籍,以达的境界。周刊筛选的每篇内容,是作者的独到见解,踩坑总结和经验分享。 showImg(https://segmentfault.com/img/bVC5qJ?w=900&h=385); 啪嗒啪嗒,啪嗒啪嗒,听到后排动感十足的清脆键盘响,我就能猜到公司程序员定...
摘要:对程序员来说,阻碍幸福感最大的因素应该是那个伟大的墙了。所幸国内有或者阿里云这样的云服务商提供镜像加速服务,可直接搜索镜像加速,添加这些服务商提供的地址即可。 对程序员来说,阻碍幸福感最大的因素应该是那个伟大的墙了。 本文对 docker 系统配置过程中,国内使用的一些加速的办法做一些记录和总结,希望能给有需要的人带来微小的帮助。 Docker for mac 下载 Docker fo...
摘要:今天小数给大家带来的是一篇代码级干货文章,与大家分享一些利用以微服务形式设置应用的经验与心得。为何选择加在我效力的企业中,我们一直在利用为全部工程师构建开发环境。运行命令,从而利用构建镜像并安装。 今天小数给大家带来的是一篇代码级干货文章,与大家分享一些利用Rails API以微服务形式设置应用的经验与心得。 为何选择Docker加Rails API? 在我效力的企业中,我们一直在利用...
阅读 2716·2021-11-19 09:40
阅读 5252·2021-09-27 14:10
阅读 2075·2021-09-04 16:45
阅读 1351·2021-07-25 21:37
阅读 2979·2019-08-30 10:57
阅读 2945·2019-08-28 17:59
阅读 1036·2019-08-26 13:46
阅读 1391·2019-08-26 13:27