最近又再次來碰碰 rails,因為不會 linux 所以覺得光是安裝開發環境就很痛苦,用 vm 做一個開發環境的保存覺得太肥大了,所以來試試看紅很久的 docker
不管是 rails、linux 還是 docker 我都是菜鳥,光是要完成這份 dockerfile 就花了好幾天的時間,遇到的問題有很多
以為
CMD
跟RUN
是差不多的東西看官方的說明,以為
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.
沒有留言:
張貼留言