成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Docker 實(shí)踐(三):Mac 下構(gòu)建 Rails 開發(fā)環(huán)境

馬忠志 / 703人閱讀

摘要:開發(fā),最讓人頭疼的就是環(huán)境問題。所以一直在嘗試做一個可以隨時復(fù)用的開發(fā)環(huán)境來。安裝關(guān)于下有了最新的解決方案,就是,直接下載安裝就可以了目前尚在版本,但是對于開發(fā)環(huán)境使用足矣。

rails 開發(fā),最讓人頭疼的就是環(huán)境問題。其本身的理念加上某偉大防御工程的幫助,使得每次環(huán)境的配置都的花費(fèi)很長的時間來解決;同時,與人協(xié)作也有諸多不便。所以一直在嘗試做一個可以隨時復(fù)用的開發(fā)環(huán)境來。

1. 安裝 Docker

關(guān)于 Mac 下 docker 有了最新的解決方案,就是 Docker for Mac,直接下載安裝就可以了(目前尚在 beta 版本,但是對于開發(fā)環(huán)境使用足矣)。

2. 編寫 Dockerfile

為了實(shí)現(xiàn)目的,我做了兩個 docker image,一個 base image,命名 rails,主要實(shí)現(xiàn) rails 運(yùn)行環(huán)境的基礎(chǔ)配置,為的是以后方便復(fù)用,另一個是項目相關(guān)的 image,主要針對特定的項目做一些配置。

rails.Dockerfile(關(guān)鍵部分在注釋中有說明)

FROM ubuntu:16.10 # 如果下載的很慢,這里可以改成 Daocloud 的鏡像:daocloud.io/library/ubuntu:trusty-XXXXXXX
MAINTAINER Tairy  # 改成你自己的

# Run update
# 為了加快 update 的速度,修改 ubuntu 源為阿里云(目前嘗試的最快的,也可以自行選擇其他國內(nèi)的鏡像)
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 的時候可能會有點(diǎn)慢,可以先 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 應(yīng)用運(yùn)行的基礎(chǔ)環(huán)境,并且設(shè)置了 onbuild 執(zhí)行的命令,之后自己的 rails 便可依賴該項目創(chuàng)建,例如:

demo.Dockerfile

FROM rails:latest # 這里添加依賴
MAINTAINER Tairy 

# TODO: custom env
EXPOSE 3000

將此 Dockerfile 置于 rails 的項目目錄下,即可進(jìn)行 build:

cd /path/to/rails/app/path
docker build demo .
3. 使用 docker-compose

使用 docker-compose 可以更好的管理容器,可在項目目錄下編寫 docker-compose.yml 文件(使用時刪除#開頭的注釋內(nèi)容):

# compose 版本號,選擇 2 即可
version: "2"
services:
  # 數(shù)據(jù)庫容器
  db:
    image: mongodb
    # 數(shù)據(jù)庫端口映射
    ports:
      - "4568:27017"
  web:
       # build 路徑
    build: .
    # 相當(dāng)于 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

進(jìn)而,執(zhí)行 docker-compose up 命令即可實(shí)現(xiàn)容器的構(gòu)建,等 server 啟動完成后,就可以通過 localhost:3000 來訪問了。

也可以加參數(shù) docker-compose up -d 讓其在后臺運(yùn)行。

4. RubyMine & Docker

可以在 RubyMine 中安裝 Docker Plugin 來直接構(gòu)建容器。

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. 配置構(gòu)建方式

在工具欄中打開 Run/Debug Configurations 窗口:

Server: 選擇第二步配置的 server

Deployment: 選擇 docker-compose.yml

至此,便可在 IDE 中直接構(gòu)建項目容器。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/26692.html

相關(guān)文章

  • Docker 實(shí)踐系列文章

    摘要:使用有一段時間了,打算把自己實(shí)踐過程中的一些理解和感悟記錄下來。目錄實(shí)踐一了解架構(gòu)實(shí)踐二使用教程實(shí)踐三下構(gòu)建開發(fā)環(huán)境實(shí)踐四環(huán)境容器化實(shí)踐五生產(chǎn)環(huán)境容器化實(shí)踐六容器監(jiān)控實(shí)踐七提升幸福感實(shí)踐八構(gòu)建開發(fā)環(huán)境實(shí)踐九生產(chǎn)環(huán)境優(yōu)化參考源碼分析系列文章 使用 docker 有一段時間了,打算把自己實(shí)踐過程中的一些理解和感悟記錄下來。 系列文章發(fā)布在 SegmentFault 上我的專欄 Tairy,...

    VincentFF 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.5 - Docker丨Build, Ship, Run,

    摘要:此刻的后手指依舊飛速地敲打鍵盤,絲毫沒有要停不下來意思。閱讀本期技術(shù)周刊,你不光能弄明白什么是,使用的意義何在,還將被傳授秘籍,以達(dá)的境界。周刊篩選的每篇內(nèi)容,是作者的獨(dú)到見解,踩坑總結(jié)和經(jīng)驗分享。 showImg(https://segmentfault.com/img/bVC5qJ?w=900&h=385); 啪嗒啪嗒,啪嗒啪嗒,聽到后排動感十足的清脆鍵盤響,我就能猜到公司程序員定...

    Panda 評論0 收藏0
  • Docker 實(shí)踐(七):提升幸福感

    摘要:對程序員來說,阻礙幸福感最大的因素應(yīng)該是那個偉大的墻了。所幸國內(nèi)有或者阿里云這樣的云服務(wù)商提供鏡像加速服務(wù),可直接搜索鏡像加速,添加這些服務(wù)商提供的地址即可。 對程序員來說,阻礙幸福感最大的因素應(yīng)該是那個偉大的墻了。 本文對 docker 系統(tǒng)配置過程中,國內(nèi)使用的一些加速的辦法做一些記錄和總結(jié),希望能給有需要的人帶來微小的幫助。 Docker for mac 下載 Docker fo...

    qingshanli1988 評論0 收藏0
  • 代碼級干貨 | 如何利用DockerRails API gem構(gòu)建微服務(wù)

    摘要:今天小數(shù)給大家?guī)淼氖且黄a級干貨文章,與大家分享一些利用以微服務(wù)形式設(shè)置應(yīng)用的經(jīng)驗與心得。為何選擇加在我效力的企業(yè)中,我們一直在利用為全部工程師構(gòu)建開發(fā)環(huán)境。運(yùn)行命令,從而利用構(gòu)建鏡像并安裝。 今天小數(shù)給大家?guī)淼氖且黄a級干貨文章,與大家分享一些利用Rails API以微服務(wù)形式設(shè)置應(yīng)用的經(jīng)驗與心得。 為何選擇Docker加Rails API? 在我效力的企業(yè)中,我們一直在利用...

    stefanieliang 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<