rails
開發,最讓人頭疼的就是環境問題。其自己的理念加上某偉大防護工程的幫助,使得每次環境的配置都的花費很長的時間來解決;同時,與人協做也有諸多不便。因此一直在嘗試作一個能夠隨時複用的開發環境來。node
關於 Mac 下 docker 有了最新的解決方案,就是 Docker for Mac,直接下載安裝就能夠了(目前尚在 beta 版本,可是對於開發環境使用足矣)。python
爲了實現目的,我作了兩個 docker image
,一個 base image
,命名 rails
,主要實現 rails
運行環境的基礎配置,爲的是之後方便複用,另外一個是項目相關的 image
,主要針對特定的項目作一些配置。git
rails.Dockerfile(關鍵部分在註釋中有說明)github
FROM ubuntu:16.10 # 若是下載的很慢,這裏能夠改爲 Daocloud 的鏡像:daocloud.io/library/ubuntu:trusty-XXXXXXX MAINTAINER Tairy <tairyguo@gmail.com> # 改爲你本身的 # 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
buildweb
cd /path/to/Dockerfile docker build rails .
以上,這個image 將會安裝 rails 應用運行的基礎環境,而且設置了 onbuild 執行的命令,以後本身的 rails
即可依賴該項目建立,例如:sql
demo.Dockerfilemongodb
FROM rails:latest # 這裏添加依賴 MAINTAINER Tairy <tairyguo@gmail.com> # TODO: custom env EXPOSE 3000
將此 Dockerfile
置於 rails 的項目目錄下,便可進行 build:docker
cd /path/to/rails/app/path docker build demo .
使用 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
來訪問了。ubuntu
也能夠加參數 docker-compose up -d
讓其在後臺運行。
能夠在 RubyMine 中安裝 Docker Plugin 來直接構建容器。
在 Preferences/Plugins
中搜索安裝。
打開 Build, Execution, Deployment/Docker
Name: ServerName
API URL: [Docker API Url]()
Certificates folder: [HTTPS]()
Docker Compose executable: 使用 which docker-compose
查看。
在工具欄中打開 Run/Debug Configurations
窗口:
Server: 選擇第二步配置的 server
Deployment: 選擇 docker-compose.yml
至此,即可在 IDE 中直接構建項目容器。