2015年11月14日 星期六

使用 Dockerfile 安裝 rails 心得

使用 Dockerfile 安裝 rails 心得

最近又再次來碰碰 rails,因為不會 linux 所以覺得光是安裝開發環境就很痛苦,用 vm 做一個開發環境的保存覺得太肥大了,所以來試試看紅很久的 docker

不管是 rails、linux 還是 docker 我都是菜鳥,光是要完成這份 dockerfile 就花了好幾天的時間,遇到的問題有很多

  • 以為 CMDRUN 是差不多的東西

    看官方的說明,以為 CMD 可以真的執行指令,結果只是在 container 運行後自動執行的指令

  • 用 root 跟用 user 路徑會不同

    一開始都直接用 root 去安裝設定東西,但這樣一來跟網路上教學文章所教的路徑就都不一樣了,沒辦法,我就不會 linux 只好建一個 user 來繼續

  • 在 docker 中用 rvm 安裝 ruby 2.2.3 會無法安裝 rails 4.2.0

    真的找不到原因,只好改用 rbenv 惹

  • 在 dockerfile 中一直無法使用 rbenv、gem 等程式,但是實際進入 container 就可以

    一直覺得是這些東西沒有被 include 的感覺,試了很久真的跟我想的一樣,每次的 RUN 貌似都是用不同的 bash 去執行,也就是說設定的變數並不會保留到下一次的 RUN,所以呢,每次的 RUN 都要把要用到的東西的 PATH 寫進去

以下就是我這次的 rails 環境,也不知道要用什麼 base 就用 ubuntu 了

# === Reference ===
# Rails install tutorial: https://gorails.com/setup/ubuntu/14.04

FROM ubuntu:14.04
MAINTAINER aiueoH

RUN useradd -m railsuser && \
    echo "railsuser ALL=(ALL:ALL) NOPASSWD:ALL" >> /etc/sudoers

USER railsuser

RUN sudo apt-get update && \
    sudo apt-get install -y \
    python-software-properties \
    software-properties-common

RUN sudo add-apt-repository ppa:chris-lea/node.js && \
    sudo apt-get update && \
    sudo apt-get install -y \
    git-core \
    curl \
    zlib1g-dev \
    build-essential \
    libssl-dev \
    libreadline-dev \
    libyaml-dev \
    libsqlite3-dev \
    sqlite3 \
    libxml2-dev \
    libxslt1-dev \
    libcurl4-openssl-dev \
    libffi-dev \
    nodejs

RUN cd && \
    git clone git://github.com/sstephenson/rbenv.git .rbenv && \
    echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc && \
    echo 'eval "$(rbenv init -)"' >> ~/.bashrc && \
    exec $SHELL

RUN git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build &&\
    echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc && \
    exec $SHELL

RUN git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~/.rbenv/plugins/rbenv-gem-rehash

RUN export PATH="$HOME/.rbenv/bin:$PATH" && \
    rbenv install 2.2.3 && \
    rbenv global 2.2.3

RUN echo "gem: --no-ri --no-rdoc" > ~/.gemrc && \
    export PATH="$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH" && \
    gem install bundler && \
    gem install rails -v 4.2.0 && \
    rbenv rehash

# Dependency for ruby gem - CarrierWave
RUN sudo apt-get install -y libmagickwand-dev

USER root

拜託各位先進多多指出錯誤或不妥的地方,感謝!

Written with StackEdit.

沒有留言:

張貼留言