在推Ruby on rails協同開發架構時,發現每個人的電腦都不同,有的是windows、有的是linux、有的則是mac,單單為了要讓大家能一起開始,就傷透腦筋,為了解決開發環境一致性的問題,我們採用了docker,想法是:如果有一個能跨越自身的電腦作業系統版本,大家都能共用的環境,如同VM,我們不就可以解決這個問題了;所以有了這個專案。
Github網址:
https://github.com/tyRoRteam/dev_docker
如何使用
在設定檔中,我們開通了本機與container兩個port對接,本機的10022連接container的22 port,讓ssh可以連得進去,另一個就是本機的10080連接container的3000 port,因為rails s預設為3000 port,這樣當container內執行
另外,我們希望在container中編輯的資料例如程式碼,能夠連通本機,這樣container image重build或因故消失後,開發過程的資料也不至於消失,所以將本機的./user_home連接container的/home/user。
在Dockerfile中就是將所有需要用到的套件寫進來,讓build image時能夠進行安裝,上述所列出來的程式碼最主要是設定使用user帳號且無需密碼就可以登入,並可以使用sudo指令。
docker-compose相關指令說明
# 注意:如果有Dockerfile有修改,用--build之後,如果沒有docker-compose down的話,直接用stop/start/restart,是不會生效的,因為container是舊的。
剛開機的電腦如果無法用ssh連上container,可以先用docker-compose ps查看運作狀態,再用docker-compose start啟動container,當status顯示up時就可以連線了.
Github網址:
https://github.com/tyRoRteam/dev_docker
如何使用
- 安裝docker
- Download git repo
$ git clone https://github.com/tyRoRteam/dev_docker.git
- Build and Run RoR development docker container
$ cd dev_docker
$ docker-compose up -d
- Login to container
$ ssh -X -p 10022 user@localhost
(default username/password: user/user)
- docker-compose.yml 設定檔
version: '3'
services:
ror_dev:
build: ror_dev/
ports:
- "10022:22"
- "10080:3000"
volumes:
- ./user_home:/home/user
- ./configs/sshd_config:/etc/ssh/sshd_config
在設定檔中,我們開通了本機與container兩個port對接,本機的10022連接container的22 port,讓ssh可以連得進去,另一個就是本機的10080連接container的3000 port,因為rails s預設為3000 port,這樣當container內執行
$ rails s
時,就可以用本機瀏覽器http://localhost:10080連到container內的rails server。另外,我們希望在container中編輯的資料例如程式碼,能夠連通本機,這樣container image重build或因故消失後,開發過程的資料也不至於消失,所以將本機的./user_home連接container的/home/user。
- Dockerfile
FROM ruby:2.5.3
...
# Create 'user' account to the image
RUN useradd -m -d /home/user -s /bin/bash user -G sudo &&\
echo "user:user" | chpasswd
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
...
在Dockerfile中就是將所有需要用到的套件寫進來,讓build image時能夠進行安裝,上述所列出來的程式碼最主要是設定使用user帳號且無需密碼就可以登入,並可以使用sudo指令。
docker-compose相關指令說明
- 查看 Docker Container 的執行狀態
$ docker-compose ps
- 啟動所有的 Docker Container 指令
$ docker-compose up -d
- 使用down刪除所有container
# 注意:如果有Dockerfile有修改,用--build之後,如果沒有docker-compose down的話,直接用stop/start/restart,是不會生效的,因為container是舊的。
$ docker-compose down
- 重新build並啟動所有的 Docker Container 指令
$ docker-compose up -d --build
- 停止 docker-compose 所有 Container
$ docker-compose stop
- 啟動 docker-compose 所有 Container
$ docker-compose start
剛開機的電腦如果無法用ssh連上container,可以先用docker-compose ps查看運作狀態,再用docker-compose start啟動container,當status顯示up時就可以連線了.
- 重新啟動 docker-compose 所有 Container
$ docker-compose restart
留言
張貼留言