幫 Rails 建立一個 Docker Container吧
幫 Rails 建立一個 Docker Container吧
為什麼你要使用Docker?
Docker最重要的價值是:有效解決環境配置、衝突的問題
可以在一台機器上跑,就可以在所有的機器上跑。
如果有問題的話,就會是大家的問題,大家一起解決XD
docker是建立一個container新的環境,有助於不會因為不同作業系統(Mac, Linux)導致無法在本端跑環境
你不用因為不小心升級了npm的webpack等等……..架不起來環境
最後電腦整個砍掉重灌之類的……….相信我你會很想死一千遍QQ。
Mac 教學
請先安裝 Docker,在Mac環境下安裝Docker非常簡單,只要安裝UI軟體即可XD。
Mac 安裝 Docker = >請點我下載
安裝完後,我們先以建立一個新專案來跑Docker
建立新專案
首先建立一個新的資料夾,並且先手動建立四個檔案1
2
3
4
5
6
7cd desktop
mkdir docker
cd mkdir
touch Gemfile.lock
touch Gemfile
touch docker-compose.yml
touch Dockerfile
手動填上設定
docker_1可以手動改成自己的專案名稱,ruby版本可以自由更改,撰寫此篇文章時是Ruby 2.5.0
版本1
2
3
4
5
6
7
8
9# Dockerfile
FROM ruby:2.5.0
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /docker_1
WORKDIR /docker_1
ADD Gemfile /docker_1/Gemfile
ADD Gemfile.lock /docker_1/Gemfile.lock
RUN bundle install
ADD . /docker_1
1 |
|
Gemfile最簡單,只要輸入兩行即可
1 |
|
docker-compose.yml 用途
docker-compose.yml的用途
- web container
- database constainer
設定完成,跑指令!
設置好檔案後,開始跑指令吧
1 |
|
這個指令輸入後,會自動建立一個容器,裝著新的rails 專案,
Dockerfile會將專案內的Gemfile複製到docker container上,並且自動執行bundle install。
還記得我們剛剛在新增Gemfile添加內容時,只安裝了Rails的Gem
database的username則設定為:postgresql
完整跑完指令後,會發現專案資料夾已經設置好Rails框架了,像是db, assets等等
設置database的username
接著來database.yml檔,因為剛剛輸入的指令設定database username是postgresql
因此資料庫的yml檔必須也添加上去,添加username
、password
、host
1 |
|
架設環境吧!
docker-compose up 的指令等同於 rails s,只是是遠端操作docker,那port設定是在30001
docker-compose up
如果設置檔案過程都順利、正常的話,輸入localhost:3000
即會看到Rails 架設成功的畫面惹。
恭喜你,看到這個畫面時,也代表進入Docker的大坑了(誤)
Docker 指令介紹
當你在Gemfile 有變動時,都要重跑bundle,那在docker上則是輸入docker-compose build1
docker-compose build
跑任何Rails指令前都必須加上docker-compose run web
例如:想要跑rails db:migrate 遷移資料庫指令時前面也要加上此行
1 |
|
開啟伺服器 localhost:3000
docker-compose up
關閉伺服器
docker-compose down
- 進入Docker rails console
docker-compose rails c
Docker 一次滿足你三個願望
不管你想要安裝Yarn, Node.js還是 Webpacker, 前端Framework都沒有問題唷
想在Docker上安裝yarn、Node.js?沒問題
1 |
|
Docker 安裝 Webpacker?沒問題
Docker container上加入webpacker
?沒問題啊!
在Gemfile上添加webpacker
1 |
|
接著重新Run一次以下指令
1 |
|
Docker上導入React framework?沒問題!
docker-compose run web rails webpack:install:react
你有發現到嗎?其實安裝webpacker指令在rails上也是輸入rails webpack:install
只是前面多加了docker-compose run web
而已
不要被長長的指令嚇到了Q_Q
用 Alias 縮短docker指令
覺得每次都要輸入這史上超長的指令,很浪費人生、手指力氣吧
你想想看,我今天想在docker上新增一個container,我要這樣子輸入docker-compose run web rails controller -g home
超級無敵霹靂有夠長的好不好!
1 |
|
以後在終端機上就可以簡單輸入dc-web
這些囉
也可以自行設定你常用的指令。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!