顯示具有 dockerfile 標籤的文章。 顯示所有文章
顯示具有 dockerfile 標籤的文章。 顯示所有文章

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.