最近又再次來碰碰 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.
沒有留言:
張貼留言